changeset 6393:a0073109b692

Fix mingw::ghostscript fix stdio crash
author Masamichi Hosoda <trueroad@users.noreply.github.com>
date Thu, 19 Mar 2015 22:51:22 +0900
parents f5483c9cf759
children 8f0261c525d8
files patches/ghostscript-9.15-windows-dxmain.patch
diffstat 1 files changed, 36 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/patches/ghostscript-9.15-windows-dxmain.patch	Thu Mar 19 21:30:40 2015 +0900
+++ b/patches/ghostscript-9.15-windows-dxmain.patch	Thu Mar 19 22:51:22 2015 +0900
@@ -1,5 +1,5 @@
 --- a/psi/dxmainc.c	2014-09-22 19:17:33.000000000 +0900
-+++ b/psi/dxmainc.c	2015-03-14 23:03:03.633481800 +0900
++++ b/psi/dxmainc.c	2015-03-19 22:41:31.286769200 +0900
 @@ -28,10 +28,12 @@
   *  gcc -shared -Wl,-soname,libgs.so.7 -o libgs.so.7.00 file.o -lc
   */
@@ -13,15 +13,44 @@
  #include <fcntl.h>
  #include <errno.h>
  #define __PROTOTYPES__
-@@ -52,7 +54,7 @@
- static int
+@@ -40,22 +42,22 @@
+ 
+ const char start_string[] = "systemdict /start get exec\n";
+ 
+-static int gsdll_stdin(void *instance, char *buf, int len);
+-static int gsdll_stdout(void *instance, const char *str, int len);
+-static int gsdll_stdout(void *instance, const char *str, int len);
++static int GSDLLCALL gsdll_stdin(void *instance, char *buf, int len);
++static int GSDLLCALL gsdll_stdout(void *instance, const char *str, int len);
++static int GSDLLCALL gsdll_stdout(void *instance, const char *str, int len);
+ 
+ /*********************************************************************/
+ /* stdio functions */
+ 
+ /* callback for reading stdin */
+ /* Use async input */
+-static int
++static int GSDLLCALL
  gsdll_stdin(void *instance, char *buf, int len)
  {
 -    return read(fileno(stdin), buf, len);
 +    return _read(fileno(stdin), buf, len);
  }
  
- static int
+-static int
++static int GSDLLCALL
+ gsdll_stdout(void *instance, const char *str, int len)
+ {
+     fwrite(str, 1, len, stdout);
+@@ -63,7 +65,7 @@
+     return len;
+ }
+ 
+-static int
++static int GSDLLCALL
+ gsdll_stderr(void *instance, const char *str, int len)
+ {
+     fwrite(str, 1, len, stderr);
 @@ -71,18 +73,196 @@
      return len;
  }
@@ -29,7 +58,7 @@
 +/* porting from dwmainc.c */
 +#ifndef GS_NO_UTF8
 +/* stdio functions - versions that translate to/from utf-8 */
-+static int
++static int GSDLLCALL
 +gsdll_stdin_utf8(void *instance, char *buf, int len)
 +{
 +    static WCHAR thiswchar = 0; /* wide character to convert to multiple bytes */
@@ -165,7 +194,7 @@
 +    fflush(stdwr);
 +}
 +
-+static int
++static int GSDLLCALL
 +gsdll_stdout_utf8(void *instance, const char *utf8str, int bytelen)
 +{
 +    static WCHAR thiswchar = 0; /* accumulates the bits from multiple encoding bytes */
@@ -175,7 +204,7 @@
 +    return bytelen;
 +}
 +
-+static int
++static int GSDLLCALL
 +gsdll_stderr_utf8(void *instance, const char *utf8str, int bytelen)
 +{
 +    static WCHAR thiswchar = 0; /* accumulates the bits from multiple encoding bytes */