git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed segfault in pdf2pdf
[swftools.git]
/
lib
/
devices
/
record.c
diff --git
a/lib/devices/record.c
b/lib/devices/record.c
index
ae493ee
..
fad1189
100644
(file)
--- a/
lib/devices/record.c
+++ b/
lib/devices/record.c
@@
-584,7
+584,7
@@
void gfxresult_record_replay(gfxresult_t*result, gfxdevice_t*device)
internal_result_t*i = (internal_result_t*)result->internal;
reader_t r;
internal_result_t*i = (internal_result_t*)result->internal;
reader_t r;
- if(i->filename) {
+ if(i->use_tempfile) {
reader_init_filereader2(&r, i->filename);
} else {
reader_init_memreader(&r, i->data, i->length);
reader_init_filereader2(&r, i->filename);
} else {
reader_init_memreader(&r, i->data, i->length);
@@
-633,6
+633,7
@@
static void record_result_destroy(gfxresult_t*r)
free(i->data);i->data = 0;
}
if(i->filename) {
free(i->data);i->data = 0;
}
if(i->filename) {
+ unlink(i->filename);
free(i->filename);
}
free(r->internal);r->internal = 0;
free(i->filename);
}
free(r->internal);r->internal = 0;
@@
-668,7
+669,7
@@
void gfxdevice_record_flush(gfxdevice_t*dev, gfxdevice_t*out)
{
internal_t*i = (internal_t*)dev->internal;
if(out) {
{
internal_t*i = (internal_t*)dev->internal;
if(out) {
- if(i->use_tempfile) {
+ if(!i->use_tempfile) {
int len=0;
void*data = writer_growmemwrite_memptr(&i->w, &len);
reader_t r;
int len=0;
void*data = writer_growmemwrite_memptr(&i->w, &len);
reader_t r;
@@
-676,7
+677,8
@@
void gfxdevice_record_flush(gfxdevice_t*dev, gfxdevice_t*out)
replay(dev, out, &r);
writer_growmemwrite_reset(&i->w);
} else {
replay(dev, out, &r);
writer_growmemwrite_reset(&i->w);
} else {
- msg("<error> Flushing not supported for file based record device");
+ msg("<fatal> Flushing not supported for file based record device");
+ exit(1);
}
}
}
}
}
}
@@
-698,10
+700,10
@@
static gfxresult_t* record_finish(struct _gfxdevice*dev)
ir->use_tempfile = i->use_tempfile;
if(i->use_tempfile) {
ir->use_tempfile = i->use_tempfile;
if(i->use_tempfile) {
+ ir->filename = i->filename;
+ } else {
ir->data = writer_growmemwrite_getmem(&i->w);
ir->length = i->w.pos;
ir->data = writer_growmemwrite_getmem(&i->w);
ir->length = i->w.pos;
- } else {
- ir->filename = i->filename;
}
i->w.finish(&i->w);
}
i->w.finish(&i->w);