Ticket UUID: | 1565751 | |||
Title: | [TIP#275] unsigned field flag for binary scan | |||
Type: | Patch | Version: | TIP Implementation | |
Submitter: | patthoyts | Created on: | 2006-09-26 13:54:33 | |
Subsystem: | 12. ByteArray Object | Assigned To: | patthoyts | |
Priority: | 5 Medium | Severity: | ||
Status: | Closed | Last Modified: | 2006-10-06 21:18:40 | |
Resolution: | Accepted | Closed By: | patthoyts | |
Closed on: | 2006-10-06 14:18:40 | |||
Description: |
This patch adds a format field flag to mark fields to be read as unsigned. The flag must come between the type identifier and the count (if any). For instance % binary scan \xff\xff cuc a b; list $a $b 255 1- | |||
User Comments: |
patthoyts added on 2006-10-06 21:18:40:
Logged In: YES user_id=202636 Added dgp's fix and some more tests. Updated the manual page and committed. dgp added on 2006-10-02 23:34:40: File Added - 196205: 1565751.patch Logged In: YES user_id=80530 Revised patch corrects those failures. dgp added on 2006-10-02 22:49:58: Logged In: YES user_id=80530 Failures on LP64 system: ==== binary-29.10 Tcl_BinaryObjCmd: scan FAILED ==== Contents of test case: catch {unset arg1 arg2} list [binary scan \xff\xff\xff\xff\xff\xff\xff\xff iui arg1 arg2] $arg1 $arg2 ---- Result was: 2 -1 -1 ---- Result should have been (exact matching): 2 4294967295 -1 ==== binary-29.10 FAILED ==== binary-29.11 Tcl_BinaryObjCmd: scan FAILED ==== Contents of test case: catch {unset arg1 arg2} list [binary scan \xff\xff\xff\xff\xff\xff\xff\xff iiu arg1 arg2] $arg1 $arg2 ---- Result was: 2 -1 -1 ---- Result should have been (exact matching): 2 -1 4294967295 ==== binary-29.11 FAILED ==== binary-29.12 Tcl_BinaryObjCmd: scan FAILED ==== Contents of test case: catch {unset arg1 arg2} list [binary scan \x80\x00\x00\x00\x00\x00\x00\x80 iuiu arg1 arg2] $arg1 $arg2 ---- Result was: 2 128 -2147483648 ---- Result should have been (exact matching): 2 128 2147483648 ==== binary-29.12 FAILED ==== binary-30.10 Tcl_BinaryObjCmd: scan FAILED ==== Contents of test case: catch {unset arg1 arg2} list [binary scan \xff\xff\xff\xff\xff\xff\xff\xff IuI arg1 arg2] $arg1 $arg2 ---- Result was: 2 -1 -1 ---- Result should have been (exact matching): 2 4294967295 -1 ==== binary-30.10 FAILED ==== binary-30.11 Tcl_BinaryObjCmd: scan FAILED ==== Contents of test case: catch {unset arg1 arg2} list [binary scan \xff\xff\xff\xff\xff\xff\xff\xff IIu arg1 arg2] $arg1 $arg2 ---- Result was: 2 -1 -1 ---- Result should have been (exact matching): 2 -1 4294967295 ==== binary-30.11 FAILED ==== binary-30.12 Tcl_BinaryObjCmd: scan FAILED ==== Contents of test case: catch {unset arg1 arg2} list [binary scan \x80\x00\x00\x00\x00\x00\x00\x80 IuIu arg1 arg2] $arg1 $arg2 ---- Result was: 2 -2147483648 128 ---- Result should have been (exact matching): 2 2147483648 128 ==== binary-30.12 FAILED ==== binary-39.9 ScanNumber: no sign extension FAILED ==== Contents of test case: catch {unset arg1} list [binary scan \x01\x01\x01\x02\x81\x01\x01\x01\x01\x82\x01\x01\x01\x01\x82\x01\x01\x01\x01\x81 iu5 arg1] $arg1 ---- Result was: 1 {33620225 16843137 16876033 25297153 -2130640639} ---- Result should have been (exact matching): 1 {33620225 16843137 16876033 25297153 2164326657} ==== binary-39.9 FAILED ==== binary-39.10 ScanNumber: no sign extension FAILED ==== Contents of test case: catch {unset arg1} list [binary scan \x01\x01\x01\x02\x81\x01\x01\x01\x01\x82\x01\x01\x01\x01\x82\x01\x01\x01\x01\x81 Iu5 arg1] $arg1 ---- Result was: 1 {16843010 -2130640639 25297153 16876033 16843137} ---- Result should have been (exact matching): 1 {16843010 2164326657 25297153 16876033 16843137} ==== binary-39.10 FAILED patthoyts added on 2006-09-29 04:32:06: File Deleted - 195333: patthoyts added on 2006-09-29 04:31:32: File Added - 195702: binary_flag.patch Logged In: YES user_id=202636 Ensure unsigned results from 32bit longs and wide values. Avoid caching unsigned longs to avoid confusion with signed values from the cached Tcl_Objs. Added tests. patthoyts added on 2006-09-26 20:54:33: File Added - 195333: binary_flag.patch |