[Python-Dev] Returning -1 from function with unsigned long type

2006-04-17 Thread skip

I'm fiddling with the compile Python w/ C++ stuff and came across a number
of places where a function is defined as returning unsigned long or unsigned
long long but returns -1.  For example, see PyInt_AsUnsignedLongMask.
What's the correct fix for that, return ~0 (assuming twos-complement
arithmetic), cast -1 to unsigned long?  Or does the API need to be changed
somehow?

Skip
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Returning -1 from function with unsigned long type

2006-04-17 Thread Tim Peters
[EMAIL PROTECTED]

 I'm fiddling with the compile Python w/ C++ stuff and came across a number
 of places where a function is defined as returning unsigned long or unsigned
 long long but returns -1.  For example, see PyInt_AsUnsignedLongMask.
 What's the correct fix for that, return ~0 (assuming twos-complement
 arithmetic), cast -1 to unsigned long?

Explicitly casting -1 is both the obvious and best way, and is
guaranteed to work as intended by the standards.

 Or does the API need to be changed somehow?

Well, it's ubiquitous in Python that C API calls returning any kind of
integer return -1 (and arrange to make PyErr_Occurred() return true)
in case of error.  This is clumsy when the integer retured is of an
unsigned type, but it _is_ C we're talking about ;-)
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com


Re: [Python-Dev] Returning -1 from function with unsigned long type

2006-04-17 Thread skip

Tim Explicitly casting -1 is both the obvious and best way, and is
Tim guaranteed to work as intended by the standards.

Thanks.  I'll fix 'em.

Skip
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com