On Fri, Oct 12, 2001 at 08:13:20PM +0200, Marcus Meissner wrote:
On Fri, Oct 12, 2001 at 03:16:04PM +0200, Johan Gill wrote:
LoadCursor() should return 0 if we emulate win9x and the second parameter is an invalid pointer.
+ if (HIWORD(name)) + if (GetVersion() & 0x80000000) /* win9x */ + if (IsBadReadPtr(name, 4)) + return 0;
This code is unclean: It should not check for versions. Hmm.
It should not use IsBadReadPtr(), but IsBadStringPtrA(). Oops, yep.
It should not use IsBad* functions, but an exception handler. Hmm, probably.
Oh no, not the version difference discussion again ;-) Excuse me, but our testing revealed that there *is* a difference between Win9x and NT 4, namely that Win9x returns 0, whereas NT 4 crashes (the program, that is) ! Using your exception handler, LoadCursor() *always* returns 0 on invalid parameter, which is WRONG in the NT 4 case since it continues program execution without crashing. --> GetVersion() is required, check was (nearly) right IMHO. Probably the best solution would be to use both an exception handler and call GetVersion() on exception. Well, you'll probably now argue that the NT 4 crash case is unneeded, however I'm not that convinced about it, since it's a real Wine incompatibility versus NT if we don't check on winver. Any reasons for doing it this way and *not* (more or less) our way ? ;-) -- Andreas Mohr Stauferstr. 6, D-71272 Renningen, Germany "Point is, nothing here is unfamiliar or unexpected. How long does it take before there's general recognition that Microsoft software has no business on the Internet? - Dennis E. Powell re: Code Red