riched20: Simplified logic in ME_StrRelPos().
diff --git a/dlls/riched20/string.c b/dlls/riched20/string.c
index 6abd22a..c9057bf 100644
--- a/dlls/riched20/string.c
+++ b/dlls/riched20/string.c
@@ -155,29 +155,22 @@
return s->nLen;
}
-/* FIXME we use widechars, not multibytes, inside, no need for complex logic anymore */
int ME_StrRelPos(ME_String *s, int nVChar, int *pRelChars)
{
+ int nRelChars = *pRelChars;
+
TRACE("%s,%d,&%d\n", debugstr_w(s->szData), nVChar, *pRelChars);
assert(*pRelChars);
- if (!*pRelChars) return nVChar;
-
- if (*pRelChars>0)
- {
- while(nVChar<s->nLen && *pRelChars>0)
- {
- nVChar++;
- (*pRelChars)--;
- }
+ if (!nRelChars)
return nVChar;
- }
-
- while(nVChar>0 && *pRelChars<0)
- {
- nVChar--;
- (*pRelChars)++;
- }
+
+ if (nRelChars>0)
+ nRelChars = min(*pRelChars, s->nLen - nVChar);
+ else
+ nRelChars = max(*pRelChars, -nVChar);
+ nVChar += nRelChars;
+ *pRelChars -= nRelChars;
return nVChar;
}