dcb3b7
From d47812b974b515e952dc093e692bf15f0a9afbc4 Mon Sep 17 00:00:00 2001
dcb3b7
From: Tony Cook <tony@develop-help.com>
dcb3b7
Date: Mon, 5 Sep 2016 15:40:11 +1000
dcb3b7
Subject: [PATCH] (perl #129130) make chdir allocate the stack it needs
dcb3b7
MIME-Version: 1.0
dcb3b7
Content-Type: text/plain; charset=UTF-8
dcb3b7
Content-Transfer-Encoding: 8bit
dcb3b7
dcb3b7
Ported to 5.24.0:
dcb3b7
dcb3b7
commit 92c843fb4b4e1a1e0ac7ec0fe198dc77266838da
dcb3b7
Author: Tony Cook <tony@develop-help.com>
dcb3b7
Date:   Mon Sep 5 15:40:11 2016 +1000
dcb3b7
dcb3b7
    (perl #129130) make chdir allocate the stack it needs
dcb3b7
dcb3b7
    chdir with no argument didn't ensure there was stack space available
dcb3b7
    for its result.
dcb3b7
dcb3b7
Signed-off-by: Petr Písař <ppisar@redhat.com>
dcb3b7
---
dcb3b7
 pp_sys.c     | 1 +
dcb3b7
 t/op/chdir.t | 8 +++++++-
dcb3b7
 2 files changed, 8 insertions(+), 1 deletion(-)
dcb3b7
dcb3b7
diff --git a/pp_sys.c b/pp_sys.c
dcb3b7
index 3bf2673..d2cf872 100644
dcb3b7
--- a/pp_sys.c
dcb3b7
+++ b/pp_sys.c
dcb3b7
@@ -3639,6 +3639,7 @@ PP(pp_chdir)
dcb3b7
 	HV * const table = GvHVn(PL_envgv);
dcb3b7
 	SV **svp;
dcb3b7
 
dcb3b7
+        EXTEND(SP, 1);
dcb3b7
         if (    (svp = hv_fetchs(table, "HOME", FALSE))
dcb3b7
              || (svp = hv_fetchs(table, "LOGDIR", FALSE))
dcb3b7
 #ifdef VMS
dcb3b7
diff --git a/t/op/chdir.t b/t/op/chdir.t
dcb3b7
index a5ea76a..685e556 100644
dcb3b7
--- a/t/op/chdir.t
dcb3b7
+++ b/t/op/chdir.t
dcb3b7
@@ -10,7 +10,7 @@ BEGIN {
dcb3b7
     # possibilities into @INC.
dcb3b7
     unshift @INC, qw(t . lib ../lib);
dcb3b7
     require "test.pl";
dcb3b7
-    plan(tests => 47);
dcb3b7
+    plan(tests => 48);
dcb3b7
 }
dcb3b7
 
dcb3b7
 use Config;
dcb3b7
@@ -161,6 +161,12 @@ sub check_env {
dcb3b7
     }
dcb3b7
 }
dcb3b7
 
dcb3b7
+fresh_perl_is(<<'EOP', '', { stderr => 1 }, "check stack handling");
dcb3b7
+for $x (map $_+1, 1 .. 100) {
dcb3b7
+  map chdir, 1 .. $x;
dcb3b7
+}
dcb3b7
+EOP
dcb3b7
+
dcb3b7
 my %Saved_Env = ();
dcb3b7
 sub clean_env {
dcb3b7
     foreach my $env (@magic_envs) {
dcb3b7
-- 
dcb3b7
2.7.4
dcb3b7