diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-12-19 11:23:31 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-12-19 11:23:31 +0000 |
| commit | 530dace4c97ea4361e4db477abbf388a497ac4e3 (patch) | |
| tree | 8176d3c209ebe7092eb09af10bc3bd374ad378eb /src/engine | |
| parent | 619c3097793031da5425026f6fc2305aad15e91b (diff) | |
| download | zcatch-530dace4c97ea4361e4db477abbf388a497ac4e3.tar.gz zcatch-530dace4c97ea4361e4db477abbf388a497ac4e3.zip | |
fixed the demo recorder so it padds the data to 4 byte alignment so the compression works like it should
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/e_demorec.c | 12 | ||||
| -rw-r--r-- | src/engine/e_demorec.h | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/engine/e_demorec.c b/src/engine/e_demorec.c index 051337b6..f19dac22 100644 --- a/src/engine/e_demorec.c +++ b/src/engine/e_demorec.c @@ -113,9 +113,15 @@ static void demorec_record_write(int type, const void *data, int size) if(!record_file) return; - - size = intpack_compress(data, size, buffer); - size = netcommon_compress(buffer, size, buffer2, sizeof(buffer2)); + + + /* pad the data with 0 so we get an alignment of 4, + else the compression won't work and miss some bytes */ + mem_copy(buffer2, data, size); + while(size&3) + buffer2[size++] = 0; + size = intpack_compress(buffer2, size, buffer); /* buffer2 -> buffer */ + size = netcommon_compress(buffer, size, buffer2, sizeof(buffer2)); /* buffer -> buffer2 */ chunk[0] = ((type&0x3)<<5); diff --git a/src/engine/e_demorec.h b/src/engine/e_demorec.h index d73a5a3d..3c4f3a41 100644 --- a/src/engine/e_demorec.h +++ b/src/engine/e_demorec.h @@ -74,4 +74,4 @@ int demorec_playback_stop(); } #endif -#endif \ No newline at end of file +#endif |