These pages are written by only Japanese.
|
Namazu for hns による簡易全文検索です。 詳細は 詳細指定/ヘルプをご参照下さい。 |
|||||||||||||||||||||||||||||||||||||||||||||||
PHP Warning: gzuncompress(): buffer error in /home/yoya/prog/flash/FlashSWF.php on line 42google で探しても解決した例が見つからないので、php のソースを読んでみた。
% pwd /home/yoya/src/php-5.2.5 % grep "buffer error" * */* */*/* %
% grep "buffer error" *.c zutil.c:"buffer error", /* Z_BUF_ERROR (-5) */
const char * const z_errmsg[10] = { "need dictionary", /* Z_NEED_DICT 2 */ "stream end", /* Z_STREAM_END 1 */ "", /* Z_OK 0 */ "file error", /* Z_ERRNO (-1) */ "stream error", /* Z_STREAM_ERROR (-2) */ "data error", /* Z_DATA_ERROR (-3) */ "insufficient memory", /* Z_MEM_ERROR (-4) */ "buffer error", /* Z_BUF_ERROR (-5) */ "incompatible version",/* Z_VERSION_ERROR (-6) */ ""}; #define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR if there was not enough room in the output buffer, Z_STREAM_ERROR if the level parameter is invalid. <略> if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; err = deflate(&stream, Z_FINISH); if (err != Z_STREAM_END) { deflateEnd(&stream); return err == Z_OK ? Z_BUF_ERROR : err;
* chara.swf addr : 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0x00000: 4357 5306 0048 2c00 789c 9cb9 6b5c 5259 CWS H, x k\RY ~~~~~~~~確かに駄目だ
* output.swf addr : 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF 0x00000: 4357 5306 a86f 2800 789c 9cb9 6b5c 5259 CWS o( x k\RY ~~~~~~~~
if ($magic == 'CWS') { movie_and_body = gzcompress($movie_and_body, 6); } <略> $this->_header['filelength'] = strlen($header_without_length) + 4 + strlen($movie_and_body);えーっと… ファイル長フィールドには 伸張した時のファイルサイズを入れないと駄目なのに、 圧縮後のファイルサイズを入れてました…
$this->_header['filelength'] = strlen($header_without_length) + 4 + strlen($movie_and_body); <略> if ($magic == 'CWS') { movie_and_body = gzcompress($movie_and_body, 6); }こうしないと。