From 3ebb878470a7c30a4120554e846ea17a7a723318 Mon Sep 17 00:00:00 2001 From: Aric Stewart Date: Mon, 9 Jan 2012 13:30:31 -0600 Subject: [PATCH] usp10: Better handle cases in single line edit controls where es->x_offset exceeds line length. --- dlls/user32/edit.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c index 0fcc9db0b68..81cb6cce5e2 100644 --- a/dlls/user32/edit.c +++ b/dlls/user32/edit.c @@ -1093,6 +1093,7 @@ static LRESULT EDIT_EM_PosFromChar(EDITSTATE *es, INT index, BOOL after_wrap) { if (es->x_offset >= get_text_length(es)) { + int leftover = es->x_offset - get_text_length(es); if (es->ssa) { const SIZE *size; @@ -1101,8 +1102,10 @@ static LRESULT EDIT_EM_PosFromChar(EDITSTATE *es, INT index, BOOL after_wrap) } else xoff = 0; + xoff += es->char_width * leftover; } - ScriptStringCPtoX(es->ssa, es->x_offset, FALSE, &xoff); + else + ScriptStringCPtoX(es->ssa, es->x_offset, FALSE, &xoff); } else xoff = 0;