This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
infnan: change the invalid nan message, add to perldiag
authorJarkko Hietaniemi <jhi@iki.fi>
Tue, 10 Feb 2015 18:26:50 +0000 (13:26 -0500)
committerJarkko Hietaniemi <jhi@iki.fi>
Tue, 10 Feb 2015 23:45:10 +0000 (18:45 -0500)
numeric.c
pod/perldiag.pod

index 91c298e..bc5913e 100644 (file)
--- a/numeric.c
+++ b/numeric.c
@@ -692,7 +692,7 @@ Perl_nan_is_signaling(NV nv)
  * precision of 128 bits. */
 #define MAX_NV_BYTES (128/8)
 
-static const char nan_payload_error[] = "NaN payload error";
+static const char invalid_nan_payload[] = "Invalid NaN payload";
 
 /*
 
@@ -775,8 +775,8 @@ Perl_nan_payload_set(pTHX_ NV *nvp, const void *bytes, STRLEN byten, bool signal
         *hibyte &= ~mask;
     }
     if (error) {
-        Perl_ck_warner_d(aTHX_ packWARN(WARN_OVERFLOW),
-                         nan_payload_error);
+        Perl_ck_warner(aTHX_ packWARN(WARN_OVERFLOW),
+                       invalid_nan_payload);
     }
     nan_signaling_set(nvp, signaling);
 }
@@ -917,8 +917,8 @@ Perl_grok_nan_payload(pTHX_ const char* s, const char* send, bool signaling, int
     }
 
     if (error) {
-        Perl_ck_warner_d(aTHX_ packWARN(WARN_OVERFLOW),
-                         nan_payload_error);
+        Perl_ck_warner(aTHX_ packWARN(WARN_OVERFLOW),
+                       invalid_nan_payload);
     }
 
     if (s == send) {
index 877b992..54c4d85 100644 (file)
@@ -2790,6 +2790,14 @@ where C<foo> is not a valid method resolution order (MRO).  Currently,
 the only valid ones supported are C<dfs> and C<c3>, unless you have loaded
 a module that is a MRO plugin.  See L<mro> and L<perlmroapi>.
 
+=item Invalid NaN payload
+
+(W overflow) C<Nan> (not-a-number) floating point values can carry
+payload information in addition to just being NaN.  The amount of
+information is limited, and dependent on the platform.
+Either the payload overflowed, or simply could not be parsed.
+See L<perldata/Special floating point>.
+
 =item Invalid negative number (%s) in chr
 
 (W utf8) You passed a negative number to C<chr>.  Negative numbers are