Ticket Hash: | 0990f53b1a77cacafccaf440d277edeae0cab70a | |||
Title: | PNG files in Metakit4 VFSes fail to be read correctly | |||
Status: | Closed | Type: | Code Defect | |
Severity: | Severe | Priority: | Immediate | |
Subsystem: | Mk4tcl | Resolution: | Fixed | |
Last Modified: | 2010-10-16 21:29:57 | |||
Version Found In: | 0.5.2 | |||
Description: | ||||
Reported by JDC:
http://groups.google.com/group/starkit/browse_frm/thread/5827418f4a2b80e7
PNG files read from an mk4vfs can fail to be read. Likely an issue in vfs::zstreamed in tclvfs. It happens on non-KitCreator Tclkits too. rkeene added on 2010-10-13 15:29:31:
rkeene added on 2010-10-13 15:42:47: In the kit: % set fd [open cross.png] mk7 % fconfigure $fd -encoding binary % set data [read $fd]; puts [string length $data] 654 % file stat cross.png x % parray x x(atime) = 1285147347 x(blksize) = 135312827 x(blocks) = 583863729869319636 x(ctime) = 1285147347 x(dev) = -143965300 x(gid) = 0 x(ino) = 0 x(mode) = 33279 x(mtime) = 1285147347 x(nlink) = 1 x(size) = 655 x(type) = file x(uid) = 0 rkeene added on 2010-10-13 15:45:53: % mk::loop x db.dirs!90.files { puts "$x, [mk::get $x name]" } db.dirs!90.files!0, cross.png db.dirs!90.files!1, tick.png db.dirs!90.files!2, tclp.gif % mk::view info db.dirs!90.files name size:I date:I contents:B % mk::get db.dirs!90.files!0 size 655 % string length [mk::get db.dirs!90.files!0 contents] 655 % mk::get db.dirs!90.files!0 -size contents 655 % rkeene added on 2010-10-13 15:52:42: Using "-translation binary" causes it to be read correctly. % set fd [open cross.png r] mk7 % fconfigure $fd -translation binary % set data [read $fd]; puts [string length $data] 655 % binary scan $data H* data_hex 1 rkeene added on 2010-10-16 21:12:41: Simple test: vfs::mk4::Mount test.mk /TEST set fd [open /TEST/cross.png] fconfigure $fd -translation binary set out [open /dev/null w] set ::fcopy_complete 0 proc fcopy_complete {args} { set ::fcopy_complete 1 } fcopy $fd $out -command fcopy_complete after 3000 update puts "FCOPY: $fcopy_complete" rkeene added on 2010-10-16 21:14:10: rkeene added on 2010-10-16 21:15:12: Backtrace follows: (gdb) bt #0 0x08075599 in Tcl_GetAssocData () #1 0x0804d67a in mkClose (instanceData=0x8170380, interp=0x0) at ../tcl/mk4tcl.cpp:326 #2 0x080b86de in TclFinalizeIOSubsystem () #3 0x0809d004 in Tcl_FinalizeThread () #4 0x0809d160 in Tcl_Finalize () #5 0x0809d518 in Tcl_Exit () #6 0x08080274 in Tcl_ExitObjCmd () #7 0x08077903 in TclEvalObjvInternal () #8 0x0807857d in Tcl_EvalEx () #9 0x080bf7d7 in Tcl_FSEvalFile () #10 0x080c2d52 in Tcl_Main () #11 0x0804c2aa in main (argc=135724192, argv=0x2004) at main.c:11 (gdb) rkeene added on 2010-10-16 21:29:57: |
Attachments:
- cross.png [download] added by rkeene on 2010-10-13 15:09:04. [details]