On Fri, May 17, 2013 at 03:35:15PM +0300, Niko Tyni wrote:
> Package: perl-tk
> Version: 1:804.030-1
> Severity: important
> Forwarded: https://rt.cpan.org/Public/Bug/Display.html?id=82677
> Tags: upstream
> User: debian-p...@lists.debian.org
> Usertags: perl-5.18-transition

>   tkGlue.c: In function 'LangSaveVar':
>   tkGlue.c:4195:26: error: lvalue required as left operand of assignment

> which I don't have fix for ATM. FWIW, the code around tkGlue.c:4195 is
> 
>   #ifdef USE_ITHREADS
>      CopSTASHPV(PL_curcop) = NULL;
>   #else
>      CopSTASH(PL_curcop) = NULL;
>   #endif

The attached patch makes the package build for me, no guarantees about
correctness.  I see the test suite doesn't pass even on current sid.

Hope this helps.
-- 
Niko Tyni   nt...@debian.org
>From 61187c190172b401e740515781f630d6f834ab45 Mon Sep 17 00:00:00 2001
From: Niko Tyni <nt...@debian.org>
Date: Fri, 17 May 2013 15:04:40 +0300
Subject: [PATCH] CopSTASHPV isn't an lvalue anymore

Commit d4d03940c58a0177edb93c8854929856e9975bf9 in Perl 5.17.1 broke
assignment to CopSTASHPV(), so use CopSTASHPV_set() instead.

This only touches threaded perls, so non-threaded ones may or may not
be broken too.
---
 tkGlue.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tkGlue.c b/tkGlue.c
index dd3d283..dcb1d6a 100644
--- a/tkGlue.c
+++ b/tkGlue.c
@@ -4195,7 +4192,11 @@ int type;
    int prefix = '?';
    name = SvPV(sv,na);
 #ifdef USE_ITHREADS
+#if PERL_REVISION > 5 || (PERL_REVISION == 5 && PERL_VERSION >= 17)
+   CopSTASHPV_set(PL_curcop, NULL);
+#else
    CopSTASHPV(PL_curcop) = NULL;
+#endif
 #else
    CopSTASH(PL_curcop) = NULL;
 #endif
-- 
1.7.10.4

Reply via email to