summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/dvi.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipdfm-x/dvi.c')
-rw-r--r--Build/source/texk/dvipdfm-x/dvi.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/Build/source/texk/dvipdfm-x/dvi.c b/Build/source/texk/dvipdfm-x/dvi.c
index 3d7d94f42ed..c5607bce672 100644
--- a/Build/source/texk/dvipdfm-x/dvi.c
+++ b/Build/source/texk/dvipdfm-x/dvi.c
@@ -1,6 +1,6 @@
/* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
- Copyright (C) 2002-2017 by Jin-Hwan Cho and Shunsaku Hirata,
+ Copyright (C) 2002-2018 by Jin-Hwan Cho and Shunsaku Hirata,
the dvipdfmx project team.
Copyright (C) 2012-2015 by Khaled Hosny <khaledhosny@eglug.org>
@@ -1999,21 +1999,24 @@ dvi_init (char *dvi_filename, double mag)
else
ungetc(ch, dvi_file);
} else {
- dvi_file = MFOPEN(dvi_filename, FOPEN_RBIN_MODE);
- if (!dvi_file) {
- char *p;
- p = strrchr(dvi_filename, '.');
- if (p == NULL || (!FILESTRCASEEQ(p, ".dvi") &&
- !FILESTRCASEEQ(p, ".xdv"))) {
- strcat(dvi_filename, ".xdv");
+ char *p, *saved_orig_name;
+ dvi_file = NULL;
+ saved_orig_name = xstrdup(dvi_filename);
+ p = strrchr(dvi_filename, '.');
+ if (p == NULL || (!FILESTRCASEEQ(p, ".dvi") &&
+ !FILESTRCASEEQ(p, ".xdv"))) {
+ strcat(dvi_filename, ".xdv");
+ dvi_file = MFOPEN(dvi_filename, FOPEN_RBIN_MODE);
+ if (!dvi_file) {
+ dvi_filename[strlen(dvi_filename) - 4] = '\0';
+ strcat(dvi_filename, ".dvi");
dvi_file = MFOPEN(dvi_filename, FOPEN_RBIN_MODE);
- if (!dvi_file) {
- dvi_filename[strlen(dvi_filename) - 4] = '\0';
- strcat(dvi_filename, ".dvi");
- dvi_file = MFOPEN(dvi_filename, FOPEN_RBIN_MODE);
- }
}
}
+ if (!dvi_file)
+ dvi_file = MFOPEN(saved_orig_name, FOPEN_RBIN_MODE);
+ free(saved_orig_name);
+
if (!dvi_file) {
ERROR("Could not open specified DVI (or XDV) file: %s",
dvi_filename);