summaryrefslogtreecommitdiff
path: root/mg.c
diff options
context:
space:
mode:
authorJim Cromie <jcromie@cpan.org>2005-12-23 06:24:29 -0700
committerSteve Peters <steve@fisharerojo.org>2005-12-24 03:30:02 +0000
commit57d7c65eded7a5f963c5ce38ee196978a06e35df (patch)
tree9abf188bda32fa0c6831eb7f2bf5536c48342764 /mg.c
parentae052913d35fc9a3eba38f8fe345d776f2522568 (diff)
downloadperl-57d7c65eded7a5f963c5ce38ee196978a06e35df.tar.gz
Re: [perl #37907] Perl_magic_get reqires ridiculous amounts of stackmemory
Message-ID: <43AC5CFD.3060200@gmail.com> Includes a change in variable names from "j" to "num_groups". p4raw-id: //depot/perl@26480
Diffstat (limited to 'mg.c')
-rw-r--r--mg.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/mg.c b/mg.c
index 0722f443d6..5072a8f6f6 100644
--- a/mg.c
+++ b/mg.c
@@ -1006,10 +1006,14 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
add_groups:
#ifdef HAS_GETGROUPS
{
- Groups_t gary[NGROUPS];
- I32 j = getgroups(NGROUPS,gary);
- while (--j >= 0)
- Perl_sv_catpvf(aTHX_ sv, " %"Gid_t_f, (long unsigned int)gary[j]);
+ Groups_t *gary = NULL;
+ I32 num_groups = getgroups(0, gary);
+ Newx(gary, num_groups, Groups_t);
+ num_groups = getgroups(num_groups, gary);
+ while (--num_groups >= 0)
+ Perl_sv_catpvf(aTHX_ sv, " %"Gid_t_f,
+ (long unsigned int)gary[num_groups]);
+ Safefree(gary);
}
#endif
(void)SvIOK_on(sv); /* what a wonderful hack! */