iliaa Thu Dec 5 18:19:03 2002 EDT
Modified files: (Branch: PHP_4_3)
/php4/ext/calendar calendar.c
Log:
Fixed memory leaks inside heb_number_to_chars().
Index: php4/ext/calendar/calendar.c
diff -u php4/ext/calendar/calendar.c:1.30 php4/ext/calendar/calendar.c:1.30.2.1
--- php4/ext/calendar/calendar.c:1.30 Thu Nov 7 09:52:02 2002
+++ php4/ext/calendar/calendar.c Thu Dec 5 18:19:02 2002
@@ -18,7 +18,7 @@
| Wez Furlong <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: calendar.c,v 1.30 2002/11/07 14:52:02 wez Exp $ */
+/* $Id: calendar.c,v 1.30.2.1 2002/12/05 23:19:02 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -381,9 +381,9 @@
for example both: year '5' and year '5000' product '�'.
use the numeric one for calculations.
*/
-static char* heb_number_to_chars(int n)
+static char* heb_number_to_chars(int n, char **ret)
{
- char *p, *old, *ret;
+ char *p, *old;
p = emalloc(10);
old = p;
@@ -392,8 +392,11 @@
prevents the option breaking the jewish beliefs, and some other
critical resources ;)
*/
- if (n > 9999 || n < 1)
+ if (n > 9999 || n < 1) {
+ efree(old);
+ *ret = NULL;
return NULL;
+ }
/* alafim case */
if (n / 1000) {
@@ -438,9 +441,10 @@
}
*p = '\0';
- ret = emalloc((int) (p - old) + 1);
- strncpy(ret, old, (int) (p - old) + 1);
- return ret;
+ *ret = estrndup(old, (p - old) + 1);
+ p = *ret;
+ efree(old);
+ return p;
}
/* {{{ proto string jdtojewish(int juliandaycount)
@@ -450,6 +454,7 @@
long julday, fl;
int year, month, day;
char date[10], hebdate[25];
+ char *dayp, *yearp;
if (ZEND_NUM_ARGS() == 1) {
if (zend_parse_parameters(1 TSRMLS_CC,"l", &julday) != SUCCESS) {
@@ -475,11 +480,14 @@
RETURN_FALSE;
}
- sprintf(hebdate, "%s %s %s", \
- heb_number_to_chars(day), \
- JewishMonthHebName[month], \
- heb_number_to_chars(year));
+ sprintf(hebdate, "%s %s %s", heb_number_to_chars(day, &dayp),
+JewishMonthHebName[month], heb_number_to_chars(year, &yearp));
+ if (dayp) {
+ efree(dayp);
+ }
+ if (yearp) {
+ efree(yearp);
+ }
RETURN_STRING(hebdate, 1);
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php