New submission from Bert JW Regeer <ber...@regeer.org>:

I was recently attempting to get Botan (http://botan.randombit.net) working 
with Python 2.6.6 on FreeBSD when it failed to compile, I filled a bug with 
Botan (http://bugs.randombit.net/show_bug.cgi?id=135) and first thought it was 
a compiler issue, and then thought it might be a Boost.Python issue.

However after further digging, see comment 3 
(http://bugs.randombit.net/show_bug.cgi?id=135#c3) I figured out it had to do 
with the fix that went in to pyport.h for issues with isspace/toupper/et al. on 
FreeBSD's libc and also Mac OS X.

As can be seen in 
http://svn.python.org/view/python/trunk/Include/pyport.h?r1=36519&r2=36793 a 
change was added to override the original definitions with a new one that used 
the wide character support. It was modified again in 
http://svn.python.org/view/python/trunk/Include/pyport.h?r1=77585&r2=80178 to 
also include Mac OS X for http://bugs.python.org/issue7072.

The issue here is that if this file is included in any C++ code that then also 
includes <locale> or any of other functions that might pull in localefwd.h the 
defines will cause actual C++ code functions to be overwritten with invalid 
data, and the C++ compiler will throw errors such as:

/usr/include/c++/4.2/bits/localefwd.h:58:34: error: macro "isspace" passed 2
arguments, but takes just 1

Putting an #if 0, #endif around that block of code allows Botan's python module 
to cleanly compile without issues.

I do apologise that I don't have a simple C++ program that reproduces the 
problem.

----------
assignee: ronaldoussoren
components: Build, Extension Modules, Library (Lib), Macintosh, Unicode, ctypes
messages: 126299
nosy: X-Istence, ronaldoussoren
priority: normal
severity: normal
status: open
title: pyport.h FreeBSD/Mac OS X "fix" causes errors in C++ compilation
type: compile error
versions: Python 2.6, Python 2.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10910>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to