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