dougm 01/08/27 10:14:48
Modified: src/modules/perl modperl_bucket.c
Log:
adjust to bucket/sms changes
Revision Changes Path
1.6 +18 -11 modperl-2.0/src/modules/perl/modperl_bucket.c
Index: modperl_bucket.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_bucket.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- modperl_bucket.c 2001/08/21 16:46:56 1.5
+++ modperl_bucket.c 2001/08/27 17:14:48 1.6
@@ -9,6 +9,7 @@
apr_bucket_refcount refcount;
SV *sv;
PerlInterpreter *perl;
+ apr_sms_t *sms;
} modperl_bucket_sv_t;
static apr_status_t
@@ -44,14 +45,9 @@
SvREFCNT_dec(svbucket->sv);
- safefree(svbucket);
+ apr_sms_free(svbucket->sms, svbucket);
}
-static void modperl_bucket_sv_free(void *e)
-{
- Safefree(e);
-}
-
static const apr_bucket_type_t modperl_bucket_sv_type = {
"mod_perl SV bucket", 4,
modperl_bucket_sv_destroy,
@@ -68,8 +64,11 @@
{
modperl_bucket_sv_t *svbucket;
- Newz(0, svbucket, 1, modperl_bucket_sv_t);
+ svbucket = (modperl_bucket_sv_t *)apr_sms_malloc(bucket->sms,
+ sizeof(*svbucket));
+ svbucket->sms = bucket->sms;
+
bucket = apr_bucket_shared_make(bucket, svbucket, offset, offset+len);
/* XXX: need to deal with PerlInterpScope */
@@ -79,7 +78,7 @@
svbucket->sv = sv;
if (!bucket) {
- Safefree(svbucket);
+ apr_sms_free(svbucket->sms, svbucket);
return NULL;
}
@@ -88,8 +87,6 @@
MP_TRACE_f(MP_FUNC, "sv=0x%lx, refcnt=%d\n",
(unsigned long)sv, SvREFCNT(sv));
- bucket->free = modperl_bucket_sv_free;
-
bucket->type = &modperl_bucket_sv_type;
return bucket;
@@ -97,7 +94,17 @@
apr_bucket *modperl_bucket_sv_create(pTHX_ SV *sv, int offset, int len)
{
- apr_bucket *bucket = (apr_bucket *)safemalloc(sizeof(*bucket));
+ apr_sms_t *sms;
+ apr_bucket *bucket;
+
+ if (!apr_bucket_global_sms) {
+ apr_sms_std_create(&apr_bucket_global_sms);
+ }
+
+ sms = apr_bucket_global_sms;
+ bucket = (apr_bucket *)apr_sms_malloc(sms, sizeof(*bucket));
APR_BUCKET_INIT(bucket);
+ bucket->sms = sms;
+
return modperl_bucket_sv_make(aTHX_ bucket, sv, offset, len);
}