From a63726ffc887cdfc775b9ef6b4091a12511a5555 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Sun, 18 Jul 2010 08:01:37 +0000 Subject: Merged revisions 82945 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/release27-maint ................ r82945 | mark.dickinson | 2010-07-18 08:55:55 +0100 (Sun, 18 Jul 2010) | 14 lines 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. ........ ................ --- Misc/NEWS | 5 +++++ Modules/_struct.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 0688d0b..c324df3 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -302,6 +302,11 @@ Library 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. + - Issue #7384: If the system readline library is linked against ncurses, do not link the readline module against ncursesw. The additional restriction of linking the readline and curses modules diff --git a/Modules/_struct.c b/Modules/_struct.c index b997d51..936e8af 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -1013,9 +1013,9 @@ bp_double(char *p, PyObject *v, const formatdef *f) static int bp_bool(char *p, PyObject *v, const formatdef *f) { - char y; + int y; y = PyObject_IsTrue(v); - memcpy(p, (char *)&y, sizeof y); + *p = (char)y; return 0; } -- cgit v0.12