fix memory access bugs in flimage use.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3682 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Angus Leeming 2002-03-07 09:59:17 +00:00
parent ff8f704031
commit 1ce24386f2
2 changed files with 26 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2002-03-07 Angus Leeming <a.leeming@ic.ac.uk>
* xformsGImage.C (statusCB, errorCB): close the file streams once the
image is loaded or if an error occurs.
(init_graphics): FLIMAGE_SETUP setup must be static as xforms stores
it permanently (and does not make a copy!).
2002-03-05 Angus Leeming <a.leeming@ic.ac.uk> 2002-03-05 Angus Leeming <a.leeming@ic.ac.uk>
* xformsGImage.[Ch]: new files. An image loader based on xforms library * xformsGImage.[Ch]: new files. An image loader based on xforms library

View File

@ -308,9 +308,15 @@ void xformsGImage::statusCB(string const & status_message)
return; return;
if (prefixIs(status_message, "Done Reading")) { if (prefixIs(status_message, "Done Reading")) {
if (image_) {
flimage_close(image_);
}
if (on_finish_.get()) {
on_finish_->emit(true); on_finish_->emit(true);
on_finish_.reset(); on_finish_.reset();
} }
}
} }
@ -319,8 +325,14 @@ void xformsGImage::errorCB(string const & error_message)
if (error_message.empty() || !on_finish_.get()) if (error_message.empty() || !on_finish_.get())
return; return;
if (image_) {
flimage_close(image_);
}
if (on_finish_.get()) {
on_finish_->emit(false); on_finish_->emit(false);
on_finish_.reset(); on_finish_.reset();
}
} }
} // namespace grfx } // namespace grfx
@ -398,7 +410,9 @@ void init_graphics()
flimage_enable_xwd(); flimage_enable_xwd();
flimage_enable_xpm(); flimage_enable_xpm();
FLIMAGE_SETUP setup; // xforms stores this permanently (does not make a copy) so
// this should never be destroyed.
static FLIMAGE_SETUP setup;
setup.visual_cue = status_report; setup.visual_cue = status_report;
setup.error_message = error_report; setup.error_message = error_report;
flimage_setup(&setup); flimage_setup(&setup);