summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/dvipdfmx.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipdfm-x/dvipdfmx.c')
-rw-r--r--Build/source/texk/dvipdfm-x/dvipdfmx.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/Build/source/texk/dvipdfm-x/dvipdfmx.c b/Build/source/texk/dvipdfm-x/dvipdfmx.c
index ce2ba0e60a6..92da42f591b 100644
--- a/Build/source/texk/dvipdfm-x/dvipdfmx.c
+++ b/Build/source/texk/dvipdfm-x/dvipdfmx.c
@@ -134,15 +134,21 @@ set_default_pdf_filename(void)
size_t len = 0;
dvi_base = xbasename(dvi_filename);
- len = strlen(dvi_base) - strlen(".dvi");
- suffix = dvi_base + len;
- if (dpx_conf.compat_mode == dpx_mode_mpost_mode && len > 0 &&
+
+ suffix = strrchr(dvi_base, '.');
+ /* suffix can be dvi_base if dvi_base is like ".abcde" */
+
+ if (suffix == NULL || suffix == dvi_base) {
+ suffix = dvi_base + strlen(dvi_base);
+ }
+ len = strlen(dvi_base) - strlen(suffix);
+
+ if (dpx_conf.compat_mode == dpx_mode_mpost_mode &&
FILESTRCASEEQ(".mps", suffix)) {
pdf_filename = NEW(len+strlen(".pdf")+1, char);
strncpy(pdf_filename, dvi_base, len);
pdf_filename[len] = '\0';
- } else if (len > 0 &&
- (FILESTRCASEEQ(".dvi", suffix) ||
+ } else if ((FILESTRCASEEQ(".dvi", suffix) ||
FILESTRCASEEQ(".xdv", suffix))) {
pdf_filename = NEW(len+strlen(".pdf")+1, char);
strncpy(pdf_filename, dvi_base, len);