summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embed.h10
-rwxr-xr-xembed.pl10
-rw-r--r--handy.h4
-rw-r--r--perl.h6
-rw-r--r--pp_sys.c4
-rw-r--r--t/pragma/warn/pp_hot15
6 files changed, 31 insertions, 18 deletions
diff --git a/embed.h b/embed.h
index cfb2aa256d..266a6919a0 100644
--- a/embed.h
+++ b/embed.h
@@ -30,8 +30,14 @@
# define Perl_set_numeric_local perl_set_numeric_local
# define Perl_set_numeric_standard perl_set_numeric_standard
# define PERL_POLLUTE
-# ifndef EMBEDMYMALLOC
-# define PERL_POLLUTE_MALLOC
+/* malloc() pollution was the default in earlier versions, so enable
+ * it for bincompat; but not for systems that used to do prevent that,
+ * or when they ask for {HIDE,EMBED}MYMALLOC */
+# if !defined(EMBEDMYMALLOC) && !defined(HIDEMYMALLOC)
+# if !defined(NeXT) && !defined(__NeXT) && !defined(__MACHTEN__) && \
+ !defined(__QNX__)
+# define PERL_POLLUTE_MALLOC
+# endif
# endif
#endif
diff --git a/embed.pl b/embed.pl
index 0543c0f32c..63d5fdd42a 100755
--- a/embed.pl
+++ b/embed.pl
@@ -303,8 +303,14 @@ print EM <<'END';
# define Perl_set_numeric_local perl_set_numeric_local
# define Perl_set_numeric_standard perl_set_numeric_standard
# define PERL_POLLUTE
-# ifndef EMBEDMYMALLOC
-# define PERL_POLLUTE_MALLOC
+/* malloc() pollution was the default in earlier versions, so enable
+ * it for bincompat; but not for systems that used to do prevent that,
+ * or when they ask for {HIDE,EMBED}MYMALLOC */
+# if !defined(EMBEDMYMALLOC) && !defined(HIDEMYMALLOC)
+# if !defined(NeXT) && !defined(__NeXT) && !defined(__MACHTEN__) && \
+ !defined(__QNX__)
+# define PERL_POLLUTE_MALLOC
+# endif
# endif
#endif
diff --git a/handy.h b/handy.h
index 95bcec7e2a..5ffd01dac9 100644
--- a/handy.h
+++ b/handy.h
@@ -241,7 +241,7 @@ typedef unsigned short U16;
#ifdef USE_NEXT_CTYPE
# define isALNUM_LC(c) \
- (NXIsAlnum((unsigned int)(c)) || (char)(c) == '_')
+ (NXIsAlNum((unsigned int)(c)) || (char)(c) == '_')
# define isIDFIRST_LC(c) \
(NXIsAlpha((unsigned int)(c)) || (char)(c) == '_')
# define isALPHA_LC(c) NXIsAlpha((unsigned int)(c))
@@ -249,7 +249,7 @@ typedef unsigned short U16;
# define isDIGIT_LC(c) NXIsDigit((unsigned int)(c))
# define isUPPER_LC(c) NXIsUpper((unsigned int)(c))
# define isLOWER_LC(c) NXIsLower((unsigned int)(c))
-# define isALNUMC_LC(c) NXIsAlnum((unsigned int)(c))
+# define isALNUMC_LC(c) NXIsAlNum((unsigned int)(c))
# define isCNTRL_LC(c) NXIsCntrl((unsigned int)(c))
# define isGRAPH_LC(c) NXIsGraph((unsigned int)(c))
# define isPRINT_LC(c) NXIsPrint((unsigned int)(c))
diff --git a/perl.h b/perl.h
index 8973317352..2b9f3c655c 100644
--- a/perl.h
+++ b/perl.h
@@ -470,10 +470,6 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER));
# include "embed.h"
#endif
-#if defined(NeXT) || defined(__NeXT) || defined (__MACHTEN__)
-# undef PERL_POLLUTE_MALLOC
-#endif
-
#define MEM_SIZE Size_t
#if defined(STANDARD_C) && defined(I_STDDEF)
@@ -2028,8 +2024,10 @@ struct ufuncs {
/* Fix these up for __STDC__ */
#ifndef DONT_DECLARE_STD
char *mktemp (char*);
+#ifndef atof
double atof (const char*);
#endif
+#endif
#ifndef STANDARD_C
/* All of these are in stdlib.h or time.h for ANSI C */
diff --git a/pp_sys.c b/pp_sys.c
index 3149f24d44..6c80e5ea7f 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -187,6 +187,10 @@ static char zero_but_true[ZBTLEN + 1] = "0 but true";
# include <sys/access.h>
#endif
+#if defined(HAS_FCNTL) && defined(F_SETFD) && !defined(FD_CLOEXEC)
+# define FD_CLOEXEC 1 /* NeXT needs this */
+#endif
+
#undef PERL_EFF_ACCESS_R_OK /* EFFective uid/gid ACCESS R_OK */
#undef PERL_EFF_ACCESS_W_OK
#undef PERL_EFF_ACCESS_X_OK
diff --git a/t/pragma/warn/pp_hot b/t/pragma/warn/pp_hot
index 2a52dfb2df..d0d339d5d3 100644
--- a/t/pragma/warn/pp_hot
+++ b/t/pragma/warn/pp_hot
@@ -51,15 +51,15 @@ print <STDERR>;
open(FOO, ">&STDOUT") and print <FOO>;
print getc(STDERR);
print getc(FOO);
-read(FOO,$_,1);
-no warnings 'io' ;
-print STDIN "anc";
####################################################################
-# N O T E #
-# This test is known to fail on Linux and *BSD systems with glibc. #
-# The glibc development team is aware of the problem, and has #
-# determined a fix for the next release of that library. #
+# The next test is known to fail on some systems (Linux/BSD+glibc, #
+# NeXT among others. glibc should be fixed in the next version, #
+# but it appears other platforms have little hope. We skip it for #
+# now (on the grounds that it is "just" a warning). #
####################################################################
+#read(FOO,$_,1);
+no warnings 'io' ;
+print STDIN "anc";
EXPECT
Filehandle main::STDIN opened only for input at - line 3.
Filehandle main::STDOUT opened only for output at - line 4.
@@ -67,7 +67,6 @@ Filehandle main::STDERR opened only for output at - line 5.
Filehandle main::FOO opened only for output at - line 6.
Filehandle main::STDERR opened only for output at - line 7.
Filehandle main::FOO opened only for output at - line 8.
-Filehandle main::FOO opened only for output at - line 9.
########
# pp_hot.c
use warnings 'closed' ;