RECT (take 2)

Dimitrie O. Paun dpaun at rogers.com
Mon Dec 23 15:18:46 CST 2002


Fixing the RECT definition (how come it fell through the cracks,
it's such a fundamental definition in Win32?) in one go doesn't
seem like it's going to happen. A lot of places need fixing, so
unless a Perl wizard (hint, hint) comes up with a magic script,
it's going to be a while until this is fixed. Meanwhile, C++ apps
are broken, because of the stronger C++ typing.

There's no point in having a broken header for the Winelib apps,
and we need a method of incrementally fixing the dang thing. The
patch below allows that. If you feel like fixing a DLL, open the
Makefile, add -DWINE_NOINTRECT to EXTRADEFS, recompile the DLL,
watch the warnings, and fix them. Similar to the -DSTRICT work.
Once we're done, we can remove the hack.

If the patch is accepted, I'll add a task to the Janitorial page,
and sister bug in bugzilla (with subitem/subbugs per DLL).

Most of the case can be transformed to debugrect(), but that requires
some infrastructure work, so it belongs in a separate patch.

ChangeLog
  Fix the RECT definition for Winelib apps.

Index: include/windef.h
===================================================================
RCS file: /var/cvs/wine/include/windef.h,v
retrieving revision 1.80
diff -u -r1.80 windef.h
--- include/windef.h	10 Dec 2002 22:56:44 -0000	1.80
+++ include/windef.h	23 Dec 2002 20:23:22 -0000
@@ -322,10 +322,18 @@
 /* The RECT structure */
 typedef struct tagRECT
 {
+/* ugly temporary hack to allow for DLL-at-a-time fix */
+#if defined(__WINE__) && !defined(WINE_NOINTRECT)
     INT  left;
     INT  top;
     INT  right;
     INT  bottom;
+#else
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+#endif
 } RECT, *PRECT, *LPRECT;
 typedef const RECT *LPCRECT;
 


-- 
Dimi.




More information about the wine-patches mailing list