File: 12_perl_init.dpatch

package info (click to toggle)
pike7.6 7.6.112-dfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 50,916 kB
  • ctags: 23,544
  • sloc: ansic: 257,802; xml: 82,717; makefile: 2,503; sh: 1,891; lisp: 655; asm: 237; pascal: 66; sed: 34; perl: 3
file content (64 lines) | stat: -rw-r--r-- 1,332 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#! /bin/sh
## 12_perl_init.dpatch by Magnus Holmgren <holmgren@debian.org>
##
## DP: Properly call PERL_SYS_INIT() and PERL_SYS_TERM().
## DP: Credit to Niko Tyni <ntyni@debian.org>.

FILE=src/modules/Perl/configure

dpatch_patch() {
    [ ! -e ${FILE}.dp-orig ] || return 1

    sed -i.dp-orig -f - ${FILE} <<'END_SED'
/my_perl = perl_alloc();/i\
  PERL_SYS_INIT3(&argc,&argv,&env);
/perl_free(my_perl);/a\
  PERL_SYS_TERM();
END_SED

    patch -p1 $*

}

dpatch_unpatch() {
    patch -p1 -R $* && [ -e ${FILE}.dp-orig ] && mv -f ${FILE}.dp-orig ${FILE}

}


DPATCH_LIB_NO_DEFAULT=1

. /usr/share/dpatch/dpatch.lib.sh

exit

@DPATCH@
--- 7.6-stable~/src/modules/Perl/perlmod.c	2004-04-15 02:11:26.000000000 +0200
+++ 7.6-stable/src/modules/Perl/perlmod.c	2008-06-16 22:50:54.000000000 +0200
@@ -235,6 +235,7 @@
 }
 
 static char *dummyargv[] = { "perl", "-e", "1", 0 };
+static int dummyargc = 3;
 
 static void init_perl_glue(struct object *o)
 {
@@ -263,6 +264,9 @@
     return;
   }
 #endif
+  if (num_perl_interpreters == 0)
+    PERL_SYS_INIT(&dummyargc, &dummyargv);
+
   MT_PERMIT;
   ps->perl = perl_alloc();
   PL_perl_destruct_level=2;
@@ -334,6 +338,8 @@
     perl_free(ps->perl);
     MT_FORBID;
     num_perl_interpreters--;
+    if (num_perl_interpreters == 0)
+      PERL_SYS_TERM();
   }
   _free_arg_and_env();
 }