texlive[55865] Build/source/texk/dvipdfm-x: Fix a bug that error
commits+kakuto at tug.org
commits+kakuto at tug.org
Sat Jul 18 05:02:47 CEST 2020
Revision: 55865
http://tug.org/svn/texlive?view=revision&revision=55865
Author: kakuto
Date: 2020-07-18 05:02:46 +0200 (Sat, 18 Jul 2020)
Log Message:
-----------
Fix a bug that error cleanup routine can be called recursively (S. Hirata).
Modified Paths:
--------------
trunk/Build/source/texk/dvipdfm-x/ChangeLog
trunk/Build/source/texk/dvipdfm-x/dvipdfmx.c
trunk/Build/source/texk/dvipdfm-x/pdfximage.c
trunk/Build/source/texk/dvipdfm-x/pdfximage.h
Modified: trunk/Build/source/texk/dvipdfm-x/ChangeLog
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/ChangeLog 2020-07-17 23:53:08 UTC (rev 55864)
+++ trunk/Build/source/texk/dvipdfm-x/ChangeLog 2020-07-18 03:02:46 UTC (rev 55865)
@@ -1,3 +1,10 @@
+2020-07-18 Shunsaku Hirata <shunsaku.hirata74 at gmail.com>
+
+ * dvipdfmx.c, pdfximage.[ch]: Don't call ordinary functions
+ such as pdf_close_images() which can call ERROR() in
+ error_cleanup(). This can result in a recursive call of
+ error_cleanup().
+
2020-07-11 Shunsaku Hirata <shunsaku.hirata74 at gmail.com>
* pdfdev.c, pdfdoc.c, pdfdraw.[ch], pdfobj.[ch], spc_pdfm.c:
Modified: trunk/Build/source/texk/dvipdfm-x/dvipdfmx.c
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/dvipdfmx.c 2020-07-17 23:53:08 UTC (rev 55864)
+++ trunk/Build/source/texk/dvipdfm-x/dvipdfmx.c 2020-07-18 03:02:46 UTC (rev 55865)
@@ -870,7 +870,11 @@
void
error_cleanup (void)
{
- pdf_close_images(); /* delete temporary files */
+ /* Fixed a stupid bug...
+ * Please don't put an ordinay function which may call ERROR() inside it.
+ * It may result in error cleanup routine being called recursively.
+ */
+ pdf_error_cleanup_cache(); /* delete temporary files */
pdf_error_cleanup();
if (pdf_filename) {
if (pdf_get_output_file()) {
Modified: trunk/Build/source/texk/dvipdfm-x/pdfximage.c
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/pdfximage.c 2020-07-17 23:53:08 UTC (rev 55864)
+++ trunk/Build/source/texk/dvipdfm-x/pdfximage.c 2020-07-18 03:02:46 UTC (rev 55865)
@@ -1056,3 +1056,20 @@
return ((try_count > 0) ? 1 : 0);
}
+
+/* ERROR() can't be used here otherwise the cleanup routine is recursively called. */
+#undef ERROR
+void
+pdf_error_cleanup_cache (void)
+{
+ struct ic_ *ic = &_ic;
+ int i;
+ pdf_ximage *I;
+
+ for (i = 0; i < ic->count; i++) {
+ I = &ic->ximages[i];
+ if (I->attr.tempfile) {
+ dpx_delete_temp_file(I->filename, false); /* temporary filename freed here */
+ }
+ }
+}
Modified: trunk/Build/source/texk/dvipdfm-x/pdfximage.h
===================================================================
--- trunk/Build/source/texk/dvipdfm-x/pdfximage.h 2020-07-17 23:53:08 UTC (rev 55864)
+++ trunk/Build/source/texk/dvipdfm-x/pdfximage.h 2020-07-18 03:02:46 UTC (rev 55865)
@@ -1,6 +1,6 @@
/* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
- Copyright (C) 2007-2018 by Jin-Hwan Cho and Shunsaku Hirata,
+ Copyright (C) 2007-2020 by Jin-Hwan Cho and Shunsaku Hirata,
the dvipdfmx project team.
Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks at kettering.edu>
@@ -102,4 +102,6 @@
/* Migrated from pdfobj.h. Those are not PDF object related... */
+extern void pdf_error_cleanup_cache (void);
+
#endif /* _PDFXIMAGE_H_ */
More information about the tex-live-commits
mailing list.