Re: [Pyobjc-dev] Python 3 + pyobjc_unicode + strptime = crash
Brought to you by:
ronaldoussoren
|
From: Virgil D. <hs...@ha...> - 2010-09-08 12:39:19
|
On Wed, Sep 8, 2010 at 2:19 PM, Ronald Oussoren <ron...@ma...> wrote:
>
> On 8 Sep, 2010, at 11:38, Virgil Dupras wrote:
>
>> Hi,
>>
>> (Sorry for not submitting it to the tracker, I don't remember my old
>> SF login, I dislike SF and I want to avoid dealing with it.)
>
>>
>> I uncovered a bug today. Under Python 3, when using a pyobjc_unicode
>> with strptime, I get a this crash:
>>
>> Traceback (most recent call last):
>> File "pyobjc_strptime_bug.py", line 6, in <module>
>> print(datetime.strptime(s, '%Y-%m-%d'))
>> File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/_strptime.py",
>> line 335, in _strptime
>> data_string[found.end():])
>> ValueError: unconverted data remains: o
>>
>> I created a script that reproduces the bug:
>>
>> from Foundation import NSString
>> s = NSString.alloc().initWithString_('2010-09-08')
>> print(type(s))
>> # Very interesting, the bug only shows up if datetime is imported here
>> instead of at the top
>> from datetime import datetime
>> print(datetime.strptime(s, '%Y-%m-%d'))
>
> This works for me, with python 3.1 and 3.2. Both of them 32-bit builds. IIRC both python versions don't run the tip of the tree, but that shouldn't matter.
>
> What version of Python and PyObjC do you use? Which architecture are you using (32-bit, intel, 3-way, ...)?
>
> The most likely reason for the odd behaviour is that the constructor for pyobjc_unicode fails to initalize one of the fields in the unicode structs, or at least not exactly the same as the initializer for the real unicode type.
>
> Ronald.
>
I use PyObjC's trunk at r2558 and Python 3.1.2, build in 32bit and
64bit intel arches (when I run it, it runs in 64bit). I fiddled around
to figure out how to run python under 32bit mode, to no avail. The
"arch" command doesn't seem to work for me...
|