PATCH: tools/winegcc/utils.c -- casts

Dimitrie O. Paun dpaun at rogers.com
Mon Nov 3 06:17:04 CST 2003


On November 3, 2003 06:09 am, Ferenc Wagner wrote:

> In libc-2.1 and later, yes it should.  According to MSDN
> (and pre-2.1 libc docs), it should not.

OK, so we need to care about n not being the size of the
required buffer.

> Seems like this is the case under Windows.  Not under any
> reasonable modern GNU/Linuxes.  However, writing portable
> code is easy: if the returned value exceeds the buffer
> length, allocate that much memory and repeat once.  No need
> to loop in this case.

No harm in looping either -- if the correct value is returned,
we will just exit right away. If we know for sure that size_t
is unsigned (is it always?), than the min() will work just fine.
Otherwise, we can rewrite that line as:

    size = n < 0 ? size*2 : n+1;

We should probably should anyway, as it makes it a lot more
clearer WTF is going on.

> By the way, I really managed to screw myself (and my gcc) up
> by mixing libc calls into winetests. 

"Doctor, it hurts when I do that..." :))) I'd say, don't do it.
Just use libc calls, don't link against msvcrt. Any reason we
need to link against msvcrt at all?

-- 
Dimi.




More information about the wine-devel mailing list