[vlc-devel] [RFC] signed versus unsigned integer types
Rémi Denis-Courmont
rdenis at simphalempin.com
Sun Jan 27 16:07:57 CET 2008
Le Saturday 26 January 2008 16:28:31 Rafaël Carré, vous avez écrit :
> I replaced int64_t with uint64_t and int with size_t where it really
> meant to be unsigned.
>
> Then looking at the compiler warnings, I had to modify
> modules/{access_output,demux,access,mux} , using (size_t)-1 when the
> value -1 has a special meaning, and >= 0 would mean a real value (used
> in some_pointer[value] for example).
This is wrong. Unsigned types should be used when negative values make no
sense. Whenever -1 is a special error value, ssize_t or int*_t should be used
instead.
That's why read and write are defined as follow:
ssize_t read (int fd, void *buf, size_t len);
ssize_t write (int, const void *buf, size_t len);
> And also add some castings when the value was used in a function
> expecting a signed type (such as lseek(), which we only use with
> SEEK_SET anyway).
Casting from unsigned to signed is useless when unambiguous, such as a
parameter to a function.
> - Should I verify that when casted to a signed type, the value is still
> positive ? (that would mean the calling function is making bullshit,
> but could help fighting bugs)
No. Waste of time.
> - Is size_t suited for int replacement, or should I use unsigned int ?
That depends on the case, same as read/write.
> - TAB_* macros in vlc_arrays.h use a signed int to count the number of
> elements, should it be switched to size_t ? ( TAB_FIND uses the value -1
> to signify that no value where found in the array, but could use
> (size_t)-1 instead )
Same as read/write.
> - It would be a good idea to fix the few left warnings in src/ and
> compile it with -Werror to catch errors in the core. Do you agree ?
Not at all. Warnings are hint that something is likely wrong. Silencing them
makes no sense, unless it's actually a proper fix.
--
Rémi Denis-Courmont
http://www.remlab.net/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20080127/fb1dd16c/attachment.sig>
More information about the vlc-devel
mailing list