2013/1/29 Pete Batard <[email protected]>:
> Just applied 3&4 but dropped 1&2. 1&2 produce sign conversion warnings
> in MSVC, that seem to be justified since we're comparing _packet with
> transfer->num_iso_packets, that is defined as an int. I don't quite get
> why we would want to switch to unsigned there.
We have:
1364 static inline unsigned char *libusb_get_iso_packet_buffer_simple(
1365 struct libusb_transfer *transfer, unsigned int packet)
1366 {
1367 int _packet;
1368
1369 /* oops..slight bug in the API. packet is an unsigned int, but
we use
1370 * signed integers almost everywhere else. range-check and
convert to
1371 * signed to avoid compiler warnings. FIXME for libusb-2. */
1372 if (packet > INT_MAX)
1373 return NULL;
1374 _packet = packet;
1375
1376 if (_packet >= transfer->num_iso_packets)
1377 return NULL;
1378
1379 return transfer->buffer + (transfer->iso_packet_desc[0].length
* _packet);
1380 }
Line 1374 we copy packet (unsigned int) into _packet (int).
This line generates a warning. I tried to fix this warning.
Then at line 1376 we compare _packet (int) with
transfer->num_iso_packets (also int).
This line generates a warning (in MSVC) if _packet is changed to
unsigned int. I also have the compiler warning with my patch.
I agree my patch was just moving a warning from one line to another.
Not a good idea.
If I change the libusb_get_iso_packet_buffer_simple() API to use int
packet (instead of unsigned int) to solve the previous problem I then
have a new warning:
./libusb.h:1379:67: warning: implicit conversion changes signedness: 'int' to
'unsigned int' [-Wsign-conversion]
...transfer->buffer + (transfer->iso_packet_desc[0].length * _packet);
~ ^~~~~~~
Signedness issues are very hard to fix correctly without changing the
public API (and without using explicit casts)
> Also, could you please try to merge multiple one liners into a single
> patch? Even if I had to reject 2 of them, applying multiple one liners
> that deal with the same warning IN A ROW is a bit of a PITA, and
> requires more time than I'd like to spend on the task.
I prefer to fix only one problem in one patch.
It is then easier to find a bug using "git bisect" for example.
Thanks for merging the code.
Bye
--
Dr. Ludovic Rousseau
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
libusbx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libusbx-devel