Evan Stade : gdiplus: Fixed 2 GdipDrawString bugs.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Aug 16 05:38:36 CDT 2007
Module: wine
Branch: master
Commit: 92aa57bece965ff3355bba8cfcfefe8a90699861
URL: http://source.winehq.org/git/wine.git/?a=commit;h=92aa57bece965ff3355bba8cfcfefe8a90699861
Author: Evan Stade <estade at gmail.com>
Date: Wed Aug 15 16:21:56 2007 -0700
gdiplus: Fixed 2 GdipDrawString bugs.
---
dlls/gdiplus/graphics.c | 34 ++++++++++++++++++----------------
1 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index c8a732d..19f89a0 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -1355,8 +1355,8 @@ GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string
length = j;
while(sum < length){
- GetTextExtentExPointW(graphics->hdc, stringdup, length, nwidth,
- &fit, NULL, &size);
+ GetTextExtentExPointW(graphics->hdc, stringdup + sum, length - sum,
+ nwidth, &fit, NULL, &size);
fitcpy = fit;
if(fit == 0){
@@ -1374,21 +1374,23 @@ GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string
/* Line break code (may look strange, but it imitates windows). */
if(lret < fit)
fit = lret; /* this is not an off-by-one error */
- else if(*(stringdup + sum + fit) == ' ')
- while(*(stringdup + sum + fit) == ' ')
- fit++;
- else
- while(*(stringdup + sum + fit - 1) != ' '){
- fit--;
-
- if(*(stringdup + sum + fit) == '\t')
- break;
-
- if(fit == 0){
- fit = fitcpy;
- break;
+ else if(fit < (length - sum)){
+ if(*(stringdup + sum + fit) == ' ')
+ while(*(stringdup + sum + fit) == ' ')
+ fit++;
+ else
+ while(*(stringdup + sum + fit - 1) != ' '){
+ fit--;
+
+ if(*(stringdup + sum + fit) == '\t')
+ break;
+
+ if(fit == 0){
+ fit = fitcpy;
+ break;
+ }
}
- }
+ }
TabbedTextOutW(graphics->hdc,
corners[0].x - roundr(ang_sin * (REAL) height),
More information about the wine-cvs
mailing list