Merged revisions 82941,82943 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r82941 | mark.dickinson | 2010-07-18 08:29:02 +0100 (Sun, 18 Jul 2010) | 3 lines

  Issue #9277: Struct module: standard bool packing was incorrect if
  char is unsigned.  Thanks Stefan Krah for the patch.
........
  r82943 | mark.dickinson | 2010-07-18 08:48:20 +0100 (Sun, 18 Jul 2010) | 1 line

  Misc/NEWS entry for r82941.
........
This commit is contained in:
Mark Dickinson 2010-07-18 07:55:55 +00:00
parent 5dba6dfe6a
commit cac0b83b35
2 changed files with 7 additions and 2 deletions

View file

@ -44,6 +44,11 @@ Library
Extension Modules Extension Modules
----------------- -----------------
- Issue #9277: Fix bug in struct.pack for bools in standard mode
(e.g., struct.pack('>?')): if conversion to bool raised an exception
then that exception wasn't properly propagated on machines where
char is unsigned.
Build Build
----- -----

View file

@ -912,11 +912,11 @@ bp_double(char *p, PyObject *v, const formatdef *f)
static int static int
bp_bool(char *p, PyObject *v, const formatdef *f) bp_bool(char *p, PyObject *v, const formatdef *f)
{ {
char y; int y;
y = PyObject_IsTrue(v); y = PyObject_IsTrue(v);
if (y < 0) if (y < 0)
return -1; return -1;
memcpy(p, (char *)&y, sizeof y); *p = (char)y;
return 0; return 0;
} }