Update to version 1.16
[p5sagit/p5-mst-13.2.git] / util.c
diff --git a/util.c b/util.c
index 8ce3d32..a11d98f 100644 (file)
--- a/util.c
+++ b/util.c
@@ -821,15 +821,18 @@ long a1, a2, a3, a4;
     }
     if (in_eval) {
        restartop = die_where(message);
-       longjmp(top_env, 3);
+       Siglongjmp(top_env, 3);
     }
     fputs(message,stderr);
-    (void)fflush(stderr);
-    if (e_fp) {
-#ifdef DOSISH
-        fclose(e_fp);
-#endif
+    (void)Fflush(stderr);
+    if (e_tmpname) {
+       if (e_fp) {
+           fclose(e_fp);
+           e_fp = Nullfp;
+       }
        (void)UNLINK(e_tmpname);
+       Safefree(e_tmpname);
+       e_tmpname = Nullch;
     }
     statusvalue = SHIFTSTATUS(statusvalue);
 #ifdef VMS
@@ -865,7 +868,7 @@ long a1, a2, a3, a4;
 #ifdef LEAKTEST
        DEBUG_L(xstat());
 #endif
-       (void)fflush(stderr);
+       (void)Fflush(stderr);
     }
 }
 
@@ -981,15 +984,18 @@ croak(pat, va_alist)
     }
     if (in_eval) {
        restartop = die_where(message);
-       longjmp(top_env, 3);
+       Siglongjmp(top_env, 3);
     }
     fputs(message,stderr);
-    (void)fflush(stderr);
-    if (e_fp) {
-#ifdef DOSISH
-        fclose(e_fp);
-#endif
+    (void)Fflush(stderr);
+    if (e_tmpname) {
+       if (e_fp) {
+           fclose(e_fp);
+           e_fp = Nullfp;
+       }
        (void)UNLINK(e_tmpname);
+       Safefree(e_tmpname);
+       e_tmpname = Nullch;
     }
     statusvalue = SHIFTSTATUS(statusvalue);
 #ifdef VMS
@@ -1037,7 +1043,7 @@ warn(pat,va_alist)
 #ifdef LEAKTEST
        DEBUG_L(xstat());
 #endif
-       (void)fflush(stderr);
+       (void)Fflush(stderr);
     }
 }
 #endif /* !defined(I_STDARG) && !defined(I_VARARGS) */