From f9344c91a4ca48288bba30dc94a2d712d0659670 Mon Sep 17 00:00:00 2001 From: Oleg Nesterov Date: Wed, 4 Jul 2012 08:21:15 -0700 Subject: [PATCH] [perl #113980] pp_syscall: "I32 retval" truncates the returned value I noticed today that syscall(9, ...) (mmap) doesn't work for me. The problem is obvious, pp_syscall() uses I32 for retval and the "long" address doesn't fit into "int". The one-liner below should fix the problem. --- pp_sys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pp_sys.c b/pp_sys.c index fb93732..c5d63ac 100644 --- a/pp_sys.c +++ b/pp_sys.c @@ -5456,7 +5456,7 @@ PP(pp_syscall) register I32 items = SP - MARK; unsigned long a[20]; register I32 i = 0; - I32 retval = -1; + IV retval = -1; if (PL_tainting) { while (++MARK <= SP) { -- 1.7.11.4