From 4ab5bd5f1ac4d396ccef2207abef0c1e6fe14b66 Mon Sep 17 00:00:00 2001 From: Father Chrysostomos Date: Sat, 4 Jun 2011 19:14:33 -0700 Subject: [PATCH] Make Devel::Peek::fill_mstats work on COWs --- ext/Devel-Peek/Peek.xs | 1 + ext/Devel-Peek/t/Peek.t | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/ext/Devel-Peek/Peek.xs b/ext/Devel-Peek/Peek.xs index 3dcba47..5e8deb9 100644 --- a/ext/Devel-Peek/Peek.xs +++ b/ext/Devel-Peek/Peek.xs @@ -161,6 +161,7 @@ fill_mstats(SV *sv, int level) { dTHX; + if (SvIsCOW(sv)) sv_force_normal(sv); if (SvREADONLY(sv)) croak("Cannot modify a readonly value"); SvGROW(sv, sizeof(struct mstats_buffer)+1); diff --git a/ext/Devel-Peek/t/Peek.t b/ext/Devel-Peek/t/Peek.t index 5c6b315..8eedf53 100644 --- a/ext/Devel-Peek/t/Peek.t +++ b/ext/Devel-Peek/t/Peek.t @@ -770,4 +770,12 @@ do_test('ENAMEs on a stash with no NAME', ENAME = "RWOM", "KLANK" # $] > 5.012 '); +SKIP: { + skip "Not built with usemymalloc", 1 + unless $Config{usemymalloc} eq 'y'; + my $x = __PACKAGE__; + ok eval { fill_mstats($x); 1 }, 'fill_mstats on COW scalar' + or diag $@; +} + done_testing(); -- 2.7.4