Issue1603686

classification
Title: Unmarshaling long-error
Type: Severity: normal
Components: Library Versions:
Milestone:
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: cgroves, gbgbgb50, leouserz
Priority: normal Keywords:

Created on 2006-11-27.12:11:35 by gbgbgb50, last changed 2007-04-18.04:57:33 by cgroves.

Messages
msg1303 (view) Author: gunter bach (gbgbgb50) Date: 2006-11-27.12:11:35
When doing:

marshal.loads(marshal.dumps(1L)) you get an:

TypeError: __lshift__ nor __rlshift__ defined for these operands

for this line in marshal.py, function load_long:
 x = x | (d<<(i*15L))

to fix it I did:
 x = x | (long(d)<<(i*15))
msg1304 (view) Author: Deleted User leouserz (leouserz) Date: 2007-01-15.16:25:58
It appears that bitwise operators on ints with longs produces longs in Python.  Jython's PyInteger blows up on this.  By altering the bitwise operators to turn the PyInteger to a PyLong and doing the corresponding operation the problem appears to be solved.  Will submit patch as a new item.
msg1305 (view) Author: Deleted User leouserz (leouserz) Date: 2007-01-15.16:31:24
patch for this is here:
http://sourceforge.net/tracker/index.php?func=detail&aid=1636030&group_id=12867&atid=112867
msg1306 (view) Author: Charlie Groves (cgroves) Date: 2007-04-18.04:57:33
Fixed by the patch in r3166.
History
Date User Action Args
2006-11-27 12:11:35gbgbgb50create