summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--toke.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/toke.c b/toke.c
index 8a2130322b..a7be0a4500 100644
--- a/toke.c
+++ b/toke.c
@@ -6954,8 +6954,12 @@ Perl_scan_num(pTHX_ char *start)
conversion at all.
*/
tryuv = U_V(value);
- if (!floatit && (NV)tryuv == value)
- sv_setuv(sv, tryuv);
+ if (!floatit && (NV)tryuv == value) {
+ if (tryuv <= IV_MAX)
+ sv_setiv(sv, (IV)tryuv);
+ else
+ sv_setuv(sv, tryuv);
+ }
else
sv_setnv(sv, value);
if ( floatit ? (PL_hints & HINT_NEW_FLOAT) :