|
1 | 1 | /* This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks. |
2 | 2 |
|
3 | | - Copyright (C) 2002-2017 by Jin-Hwan Cho and Shunsaku Hirata, |
| 3 | + Copyright (C) 2002-2018 by Jin-Hwan Cho and Shunsaku Hirata, |
4 | 4 | the dvipdfmx project team. |
5 | 5 |
|
6 | 6 | Copyright (C) 2012-2015 by Khaled Hosny <khaledhosny@eglug.org> |
@@ -1999,21 +1999,24 @@ dvi_init (char *dvi_filename, double mag) |
1999 | 1999 | else |
2000 | 2000 | ungetc(ch, dvi_file); |
2001 | 2001 | } else { |
2002 | | - dvi_file = MFOPEN(dvi_filename, FOPEN_RBIN_MODE); |
2003 | | - if (!dvi_file) { |
2004 | | - char *p; |
2005 | | - p = strrchr(dvi_filename, '.'); |
2006 | | - if (p == NULL || (!FILESTRCASEEQ(p, ".dvi") && |
2007 | | - !FILESTRCASEEQ(p, ".xdv"))) { |
2008 | | - strcat(dvi_filename, ".xdv"); |
| 2002 | + char *p, *saved_orig_name; |
| 2003 | + dvi_file = NULL; |
| 2004 | + saved_orig_name = xstrdup(dvi_filename); |
| 2005 | + p = strrchr(dvi_filename, '.'); |
| 2006 | + if (p == NULL || (!FILESTRCASEEQ(p, ".dvi") && |
| 2007 | + !FILESTRCASEEQ(p, ".xdv"))) { |
| 2008 | + strcat(dvi_filename, ".xdv"); |
| 2009 | + dvi_file = MFOPEN(dvi_filename, FOPEN_RBIN_MODE); |
| 2010 | + if (!dvi_file) { |
| 2011 | + dvi_filename[strlen(dvi_filename) - 4] = '\0'; |
| 2012 | + strcat(dvi_filename, ".dvi"); |
2009 | 2013 | dvi_file = MFOPEN(dvi_filename, FOPEN_RBIN_MODE); |
2010 | | - if (!dvi_file) { |
2011 | | - dvi_filename[strlen(dvi_filename) - 4] = '\0'; |
2012 | | - strcat(dvi_filename, ".dvi"); |
2013 | | - dvi_file = MFOPEN(dvi_filename, FOPEN_RBIN_MODE); |
2014 | | - } |
2015 | 2014 | } |
2016 | 2015 | } |
| 2016 | + if (!dvi_file) |
| 2017 | + dvi_file = MFOPEN(saved_orig_name, FOPEN_RBIN_MODE); |
| 2018 | + free(saved_orig_name); |
| 2019 | + |
2017 | 2020 | if (!dvi_file) { |
2018 | 2021 | ERROR("Could not open specified DVI (or XDV) file: %s", |
2019 | 2022 | dvi_filename); |
|
0 commit comments