From 24a0f15b29482a68ed17001844acc3c11c585136 Mon Sep 17 00:00:00 2001 From: Krzysztof Foltman Date: Mon, 10 Oct 2005 11:18:29 +0000 Subject: [PATCH] Fixed EOL detection in ME_RunOfsFromCharOfs in 1.0 emulation mode (necessary for a non-workaround version of EM_POSFROMCHAR). --- dlls/riched20/run.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/riched20/run.c b/dlls/riched20/run.c index c994758724..568472c62f 100644 --- a/dlls/riched20/run.c +++ b/dlls/riched20/run.c @@ -145,6 +145,7 @@ void ME_RunOfsFromCharOfs(ME_TextEditor *editor, int nCharOfs, ME_DisplayItem ** if (nCharOfs < pPara->member.para.next_para->member.para.nCharOfs) { + int eollen = 1; *ppRun = ME_FindItemFwd(pPara, diRun); assert(*ppRun); while (!((*ppRun)->member.run.nFlags & MERF_ENDPARA)) @@ -159,7 +160,10 @@ void ME_RunOfsFromCharOfs(ME_TextEditor *editor, int nCharOfs, ME_DisplayItem ** } *ppRun = pNext; } - if (nCharOfs == nParaOfs + (*ppRun)->member.run.nCharOfs) { + /* the handling of bEmulateVersion10 may be a source of many bugs, I'm afraid */ + eollen = (editor->bEmulateVersion10 ? 2 : 1); + if (nCharOfs >= nParaOfs + (*ppRun)->member.run.nCharOfs && + nCharOfs < nParaOfs + (*ppRun)->member.run.nCharOfs + eollen) { *pOfs = 0; return; }