[prev in list] [next in list] [prev in thread] [next in thread]
List: apache-modperl-cvs
Subject: cvs commit: modperl-2.0/xs/Apache/Log Apache__Log.h
From: dougm () apache ! org
Date: 2002-03-26 3:37:48
[Download RAW message or body]
dougm 02/03/25 19:37:47
Modified: xs/Apache/Log Apache__Log.h
Log:
workaround win32/5.6.1 bug which crashes when using PL_sv_no with do_join
Revision Changes Path
1.9 +24 -6 modperl-2.0/xs/Apache/Log/Apache__Log.h
Index: Apache__Log.h
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/Apache/Log/Apache__Log.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Apache__Log.h 4 May 2001 06:31:37 -0000 1.8
+++ Apache__Log.h 26 Mar 2002 03:37:47 -0000 1.9
@@ -102,6 +102,27 @@
#define mpxs_Apache__Server_log(sv) \
mpxs_Apache__Log_log(aTHX_ sv, MP_LOG_SERVER)
+static MP_INLINE SV *modperl_perl_do_join(pTHX_ SV **mark, SV **sp)
+{
+ SV *sv = newSV(0);
+ SV *delim;
+#ifdef WIN32
+ /* XXX: using PL_sv_no crashes on win32 with 5.6.1 */
+ delim = newSVpv("", 0);
+#else
+ delim = SvREFCNT_inc(&PL_sv_no);
+#endif
+
+ do_join(sv, delim, mark, sp);
+
+ SvREFCNT_dec(delim);
+
+ return sv;
+}
+
+#define my_do_join(m, s) \
+ modperl_perl_do_join(aTHX_ (m), (s))
+
static XS(MPXS_Apache__Log_dispatch)
{
dXSARGS;
@@ -115,8 +136,7 @@
}
if (items > 2) {
- msgsv = newSV(0);
- do_join(msgsv, &PL_sv_no, MARK+1, SP);
+ msgsv = my_do_join(MARK+1, SP);
}
else {
msgsv = ST(1);
@@ -213,8 +233,7 @@
status = (apr_status_t)SvIV(ST(4));
if (items > 6) {
- msgsv = newSV(0);
- do_join(msgsv, &PL_sv_no, MARK+5, SP);
+ msgsv = my_do_join(MARK+5, SP);
}
else {
msgsv = ST(5);
@@ -279,8 +298,7 @@
}
if (items > 1+i) {
- sv = newSV(0);
- do_join(sv, &PL_sv_no, MARK+i, SP); /* $sv = join '', @_[1..$#_] */
+ sv = my_do_join(MARK+i, SP); /* $sv = join '', @_[1..$#_] */
errstr = SvPV(sv,n_a);
}
else {
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic