Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make explicit the implicit byte-narrowing function of [binary format]. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dgp-properbytearray |
Files: | files | file ages | folders |
SHA1: |
56ac0f8998588d8dda62aef6a8fa759a |
User & Date: | dgp 2016-12-07 19:22:33 |
Context
2016-12-07
| ||
19:52 | Put explicit byte-narrowing in the write pipeline of -encoding binary channels. This makes tests pas... check-in: 236f5e4f11 user: dgp tags: dgp-properbytearray | |
19:22 | Make explicit the implicit byte-narrowing function of [binary format]. check-in: 56ac0f8998 user: dgp tags: dgp-properbytearray | |
18:57 | Create a narrowing procedure to make the operation explicit when needed. check-in: ba8e57d76c user: dgp tags: dgp-properbytearray | |
Changes
Changes to generic/tclBinary.c.
︙ | ︙ | |||
843 844 845 846 847 848 849 | * of bytes in a single argument. */ if (arg >= objc) { goto badIndex; } if (count == BINARY_ALL) { | > | > | 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 | * of bytes in a single argument. */ if (arg >= objc) { goto badIndex; } if (count == BINARY_ALL) { Tcl_Obj *copy = TclNarrowToBytes(objv[arg]); Tcl_GetByteArrayFromObj(copy, &count); Tcl_DecrRefCount(copy); } else if (count == BINARY_NOCOUNT) { count = 1; } arg++; if (cmd == 'a' || cmd == 'A') { offset += count; } else if (cmd == 'b' || cmd == 'B') { |
︙ | ︙ | |||
1006 1007 1008 1009 1010 1011 1012 1013 | continue; } switch (cmd) { case 'a': case 'A': { char pad = (char) (cmd == 'a' ? '\0' : ' '); unsigned char *bytes; | > | > | 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 | continue; } switch (cmd) { case 'a': case 'A': { char pad = (char) (cmd == 'a' ? '\0' : ' '); unsigned char *bytes; Tcl_Obj *copy = TclNarrowToBytes(objv[arg++]); bytes = Tcl_GetByteArrayFromObj(copy, &length); if (count == BINARY_ALL) { count = length; } else if (count == BINARY_NOCOUNT) { count = 1; } if (length >= count) { memcpy(cursor, bytes, (size_t) count); } else { memcpy(cursor, bytes, (size_t) length); memset(cursor + length, pad, (size_t) (count - length)); } cursor += count; Tcl_DecrRefCount(copy); break; } case 'b': case 'B': { unsigned char *last; str = TclGetStringFromObj(objv[arg], &length); |
︙ | ︙ |