ports/127108: [PATCH] www/p5-ClearSilver: [SUMMARIZE CHANGES]
Sergey Skvortsov
skv at FreeBSD.org
Fri Sep 5 12:20:01 UTC 2008
>Number: 127108
>Category: ports
>Synopsis: [PATCH] www/p5-ClearSilver: [SUMMARIZE CHANGES]
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Fri Sep 05 12:20:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Sergey Skvortsov
>Release: FreeBSD 7.0-STABLE i386
>Organization:
>Environment:
System: FreeBSD vega.protey.ru 7.0-STABLE FreeBSD 7.0-STABLE #2: Tue Jul 15 15:38:46 MSD 2008
>Description:
- fix perl_render() - avoid "uninitialized value" warnings
- fix perlcs_parseString() - correct malloc: use len+1 instead of len
Added file(s):
- files/patch-ClearSilver.xs
Generated with FreeBSD Port Tools 0.77
>How-To-Repeat:
>Fix:
--- p5-ClearSilver-0.10.5_1.patch begins here ---
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/www/p5-ClearSilver/Makefile,v
retrieving revision 1.4
diff -u -u -r1.4 Makefile
--- Makefile 19 Feb 2008 10:12:11 -0000 1.4
+++ Makefile 5 Sep 2008 10:57:33 -0000
@@ -7,6 +7,7 @@
PORTNAME= ClearSilver
PORTVERSION= 0.10.5
+PORTREVISION= 1
CATEGORIES= www perl5
PKGNAMEPREFIX= p5-
DISTFILES=
@@ -14,8 +15,8 @@
MAINTAINER= rink at FreeBSD.org
COMMENT= Perl bindings for fast and powerful template system
-BUILD_DEPENDS= ${LOCALBASE}/lib/libneo_cs.a:${PORTSDIR}/www/clearsilver \
- ${NONEXISTENT}:${PORTSDIR}/www/clearsilver:extract
+BUILD_DEPENDS= ${LOCALBASE}/lib/libneo_cs.a:${PORTSDIR}/www/clearsilver
+EXTRACT_DEPENDS= ${NONEXISTENT}:${PORTSDIR}/www/clearsilver:extract
PERL_CONFIGURE= yes
CONFIGURE_ARGS= INC="-I${LOCALBASE}/include/ClearSilver"
Index: files/patch-ClearSilver.xs
===================================================================
RCS file: files/patch-ClearSilver.xs
diff -N files/patch-ClearSilver.xs
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ files/patch-ClearSilver.xs 5 Sep 2008 10:57:33 -0000
@@ -0,0 +1,343 @@
+--- ClearSilver.xs 2007-07-12 05:31:34.000000000 +0400
++++ ClearSilver.xs 2008-09-05 14:23:49.000000000 +0400
+@@ -21,6 +21,7 @@
+ typedef perlCS* ClearSilver__CS;
+
+ static char* g_sort_func_name;
++static HV *hdf_stash, *cs_stash;
+
+ static void debug(char* fmt, ...)
+ {
+@@ -64,14 +65,13 @@
+ SAVETMPS;
+
+ PUSHMARK(SP);
+- sv_a = sv_newmortal();
+- sv_setref_pv(sv_a, "ClearSilver::HDF", (void*)&a);
++ EXTEND(SP, 2);
+
+- sv_b = sv_newmortal();
+- sv_setref_pv(sv_b, "ClearSilver::HDF", (void*)&b);
++ sv_a = sv_2mortal(sv_bless(newRV_noinc( newSViv(PTR2IV( &a )) ), hdf_stash));
++ sv_b = sv_2mortal(sv_bless(newRV_noinc( newSViv(PTR2IV( &b )) ), hdf_stash));
+
+- XPUSHs(sv_a);
+- XPUSHs(sv_b);
++ PUSHs(sv_a);
++ PUSHs(sv_b);
+
+ PUTBACK;
+
+@@ -93,27 +93,30 @@
+ }
+
+
++MODULE = ClearSilver PACKAGE = ClearSilver::HDF PREFIX = perlhdf_
+
++PROTOTYPES: DISABLE
+
++BOOT:
++{
++ hdf_stash = gv_stashpv("ClearSilver::HDF", TRUE);
++}
+
+-MODULE = ClearSilver PACKAGE = ClearSilver::HDF PREFIX = perlhdf_
+-
+-ClearSilver::HDF
+-perlhdf_new(self)
+- char* self
+- PREINIT:
+- ClearSilver__HDF hdf;
++void
++perlhdf_new(class)
+ CODE:
+- debug("%s\n", self);
++ {
++ ClearSilver__HDF hdf;
++
+ hdf = (ClearSilver__HDF)malloc(sizeof(perlHDF));
+- if (!hdf) {
+- RETVAL = NULL;
+- } else {
+- hdf->err = hdf_init(&(hdf->hdf));
+- RETVAL = hdf;
+- }
+- OUTPUT:
+- RETVAL
++ if (!hdf)
++ XSRETURN_UNDEF;
++
++ hdf->err = hdf_init(&(hdf->hdf));
++
++ ST(0) = sv_2mortal(sv_bless(newRV_noinc( newSViv(PTR2IV(hdf)) ), hdf_stash));
++ XSRETURN(1);
++ }
+
+ void
+ perlhdf_DESTROY(hdf)
+@@ -126,17 +129,17 @@
+ int
+ perlhdf_setValue(hdf, key, value)
+ ClearSilver::HDF hdf
+- char* key
+- char* value
+ CODE:
++ {
++ char* key;
++ char* value;
++
+ hdf->err = hdf_set_value(hdf->hdf, key, value);
+- if (hdf->err == STATUS_OK) {
+- RETVAL = 0;
+- } else {
+- RETVAL = 1;
+- }
+- OUTPUT:
+- RETVAL
++
++ ST(0) = (hdf->err != STATUS_OK)
++ ? &PL_sv_yes : &PL_sv_no;
++ XSRETURN(1);
++ }
+
+
+ char*
+@@ -156,42 +159,39 @@
+ char* name
+ ClearSilver::HDF src
+ CODE:
++ {
+ hdf->err = hdf_copy(hdf->hdf, name, src->hdf);
+- if (hdf->err == STATUS_OK) {
+- RETVAL = 0;
+- } else {
+- RETVAL = 1;
+- }
+- OUTPUT:
+- RETVAL
++
++ ST(0) = (hdf->err != STATUS_OK)
++ ? &PL_sv_yes : &PL_sv_no;
++ XSRETURN(1);
++ }
+
+ int
+ perlhdf_readFile(hdf, filename)
+ ClearSilver::HDF hdf
+ char* filename
+ CODE:
++ {
+ hdf->err = hdf_read_file(hdf->hdf, filename);
+- if (hdf->err == STATUS_OK) {
+- RETVAL = 1;
+- } else {
+- RETVAL = 0;
+- }
+- OUTPUT:
+- RETVAL
++
++ ST(0) = (hdf->err == STATUS_OK)
++ ? &PL_sv_yes : &PL_sv_no;
++ XSRETURN(1);
++ }
+
+ int
+ perlhdf_writeFile(hdf, filename)
+- ClearSilver::HDF hdf
+- char* filename
++ ClearSilver::HDF hdf
++ char* filename
+ CODE:
+- hdf->err = hdf_write_file(hdf->hdf, filename);
+- if (hdf->err == STATUS_OK) {
+- RETVAL = 1;
+- } else {
+- RETVAL = 0;
+- }
+- OUTPUT:
+- RETVAL
++ {
++ hdf->err = hdf_write_file(hdf->hdf, filename);
++
++ ST(0) = (hdf->err == STATUS_OK)
++ ? &PL_sv_yes : &PL_sv_no;
++ XSRETURN(1);
++ }
+
+ ClearSilver::HDF
+ perlhdf_getObj(hdf, name)
+@@ -312,57 +312,60 @@
+ OUTPUT:
+ RETVAL
+
+-int
++void
+ perlhdf_sortObj(hdf, func_name)
+ ClearSilver::HDF hdf;
+ char* func_name;
+- PREINIT:
+- NEOERR* err;
+ CODE:
++ {
++ NEOERR* err;
+ g_sort_func_name = func_name;
+ err = hdf_sort_obj(hdf->hdf, sortFunction);
+- RETVAL = 0;
+- OUTPUT:
+- RETVAL
+
++ XSRETURN_UNDEF;
++ }
+
+-int
++void
+ perlhdf_setSymlink(hdf, src, dest)
+ ClearSilver::HDF hdf;
+ char* src;
+ char* dest;
+- PREINIT:
+- NEOERR* err;
+ CODE:
+- err = hdf_set_symlink (hdf->hdf, src, dest);
+- if (err == STATUS_OK) {
+- RETVAL = 1;
+- } else {
+- RETVAL = 0;
+- }
+- OUTPUT:
+- RETVAL
++ {
++ NEOERR* err;
+
++ err = hdf_set_symlink(hdf->hdf, src, dest);
+
+-int
++ ST(0) = (err == STATUS_OK)
++ ? &PL_sv_yes : &PL_sv_no;
++ XSRETURN(1);
++ }
++
++void
+ perlhdf_removeTree(hdf, name)
+ ClearSilver::HDF hdf;
+ char* name;
+- PREINIT:
+- NEOERR* err;
+ CODE:
++ {
++ NEOERR* err;
++
+ err = hdf_remove_tree(hdf->hdf, name);
+- if (err == STATUS_OK) {
+- RETVAL = 1;
+- } else {
+- RETVAL = 0;
+- }
+- OUTPUT:
+- RETVAL
++
++ ST(0) = (err == STATUS_OK)
++ ? &PL_sv_yes : &PL_sv_no;
++ XSRETURN(1);
++ }
+
+
+ MODULE = ClearSilver PACKAGE = ClearSilver::CS PREFIX = perlcs_
+
++PROTOTYPES: DISABLE
++
++BOOT:
++{
++ cs_stash = gv_stashpv("ClearSilver::CS", TRUE);
++}
++
+ ClearSilver::CS
+ perlcs_new(self, hdf)
+ char* self
+@@ -401,7 +404,11 @@
+ ClearSilver::CS cs
+ CODE:
+ {
+- SV *str = newSV(0);
++ SV *str = newSV(1);
++ SvLEN_set(str, 0);
++ SvCUR_set(str, 0);
++ SvPOK_on(str);
++
+ cs->err = cs_render(cs->cs, str, output);
+ if (cs->err == STATUS_OK) {
+ ST(0) = sv_2mortal(str);
+@@ -412,46 +419,40 @@
+ XSRETURN(1);
+ }
+
+-int
++void
+ perlcs_parseFile(cs, cs_file)
+ ClearSilver::CS cs
+ char* cs_file
+ CODE:
+- do {
+- cs->err = cs_parse_file(cs->cs, cs_file);
+- if (cs->err != STATUS_OK) {
+- cs->err = nerr_pass(cs->err);
+- RETVAL = 0;
+- break;
+- }
+- RETVAL = 1;
+- } while (0);
+- OUTPUT:
+- RETVAL
++ {
++ cs->err = cs_parse_file(cs->cs, cs_file);
++ if (cs->err != STATUS_OK) {
++ cs->err = nerr_pass(cs->err);
++ XSRETURN_NO;
++ }
+
+-int
+-perlcs_parseString(cs, in_str)
++ XSRETURN_YES;
++ }
++
++void
++perlcs_parseString(cs, sv)
+ ClearSilver::CS cs
+- char* in_str
+- PREINIT:
+- char* cs_str;
+- int len;
++ SV *sv
+ CODE:
+- do {
+- len = strlen(in_str);
+- cs_str = (char *)malloc(len);
+- if (!cs_str) {
+- RETVAL = 0;
+- break;
+- }
+- strcpy(cs_str, in_str);
+- cs->err = cs_parse_string(cs->cs, cs_str, len);
+- if (cs->err != STATUS_OK)
+- RETVAL = 0;
+- RETVAL = 1;
+- } while (0);
+- OUTPUT:
+- RETVAL
++ {
++ char* in_str;
++ char* cs_str;
++ STRLEN len;
+
++ in_str = SvPV(sv, len);
++ cs_str = (char *)malloc(len + 1);
++ if (!cs_str)
++ XSRETURN_UNDEF;
+
++ memcpy(cs_str, in_str, len + 1);
++ cs->err = cs_parse_string(cs->cs, cs_str, len);
+
++ ST(0) = (cs->err == STATUS_OK)
++ ? &PL_sv_yes : &PL_sv_no;
++ XSRETURN(1);
++ }
--- p5-ClearSilver-0.10.5_1.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list