[patch] ext/fribidi

From: Date: Sun, 15 Sep 2002 08:49:14 +0000
Subject: [patch] ext/fribidi
Groups: php.dev 
Request: Send a blank email to php-dev+get-88323@lists.php.net to get a copy of this message
Hello, This patch to fribidi does the following: - Make it compile ;) - Fix a little memory leak (detected by Ilia) - Use php_error_docref PS.: I would like to maintain the fribidi extension from now on. Tal Index: config.m4 =================================================================== RCS file: /repository/php4/ext/fribidi/config.m4,v retrieving revision 1.8 diff -u -r1.8 config.m4 --- config.m4 12 Mar 2002 16:18:13 -0000 1.8 +++ config.m4 14 Sep 2002 20:29:58 -0000 @@ -36,10 +36,10 @@ dnl check for glib header files - AC_MSG_CHECKING([for glibconfig.h in "usr/lib/glib/include/"]) - if test -f /usr/lib/glib/include/glibconfig.h ; then + AC_MSG_CHECKING([for glib header files]) + if test -f which glib-config ; then AC_MSG_RESULT([found]) - GLIB_INCDIR=/usr/lib/glib/include/ + GLIB_INCDIR=glib-config --cflags else AC_MSG_RESULT([missing]) fi @@ -67,7 +67,7 @@ AC_MSG_RESULT([yes]) PHP_ADD_INCLUDE("$FRIBIDI_INCDIR") - PHP_ADD_INCLUDE("$GLIB_INCDIR") + PHP_EVAL_INCLINE("$GLIB_INCDIR") PHP_ADD_LIBRARY_WITH_PATH(fribidi,"$FRIBIDI_LIBDIR", FRIBIDI_SHARED_LIBADD) AC_DEFINE(HAVE_FRIBIDI, 1, [ ]) Index: fribidi.c =================================================================== RCS file: /repository/php4/ext/fribidi/fribidi.c,v retrieving revision 1.14 diff -u -r1.14 fribidi.c --- fribidi.c 15 Aug 2002 21:43:41 -0000 1.14 +++ fribidi.c 14 Sep 2002 20:29:58 -0000 @@ -134,8 +134,8 @@ FriBidiCharType base_dir; - guint16 *position_L_to_V_list; - guint16 *position_V_to_L_list; + FriBidiStrIndex *position_L_to_V_list; + FriBidiStrIndex *position_V_to_L_list; guint8 *embedding_level_list; /* get parameters from input */ @@ -162,8 +162,8 @@ u_logical_str = (FriBidiChar*) emalloc(sizeof(FriBidiChar)*alloc_len); u_visual_str = (FriBidiChar*) emalloc(sizeof(FriBidiChar)*alloc_len); - position_L_to_V_list = (guint16*) emalloc(sizeof(guint16)*alloc_len); - position_V_to_L_list = (guint16*) emalloc(sizeof(guint16)*alloc_len); + position_L_to_V_list = (FriBidiStrIndex*) emalloc(sizeof(FriBidiStrIndex)*alloc_len); + position_V_to_L_list = (FriBidiStrIndex*) emalloc(sizeof(FriBidiStrIndex)*alloc_len); embedding_level_list = (guint8*) emalloc(sizeof(guint8)*alloc_len); outString = (guchar*)emalloc(sizeof(guchar)*alloc_len); @@ -174,25 +174,32 @@ switch(Z_LVAL_PP(parameter3)) { case FRIBIDI_CHARSET_UTF8: - utf8_len=fribidi_utf8_to_unicode(inString, u_logical_str); + utf8_len=fribidi_utf8_to_unicode(inString, len, u_logical_str); break; case FRIBIDI_CHARSET_ISO8859_6: - fribidi_iso8859_6_to_unicode(inString, u_logical_str); + fribidi_iso8859_6_to_unicode(inString, len, u_logical_str); break; case FRIBIDI_CHARSET_ISO8859_8: - fribidi_iso8859_8_to_unicode(inString, u_logical_str); + fribidi_iso8859_8_to_unicode(inString, len, u_logical_str); break; case FRIBIDI_CHARSET_CP1255: - fribidi_cp1255_to_unicode(inString, u_logical_str); + fribidi_cp1255_to_unicode(inString, len, u_logical_str); break; case FRIBIDI_CHARSET_CP1256: - fribidi_cp1256_to_unicode(inString, u_logical_str); + fribidi_cp1256_to_unicode(inString, len, u_logical_str); break; case FRIBIDI_CHARSET_ISIRI_3342: - fribidi_isiri_3342_to_unicode(inString, u_logical_str); + fribidi_isiri_3342_to_unicode(inString, len, u_logical_str); break; default: - zend_error(E_ERROR,"unknown character set %d<br />", Z_LVAL_PP(parameter3)); + php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unknown charset"); + efree(u_logical_str); + efree(u_visual_str); + efree(position_L_to_V_list); + efree(position_V_to_L_list); + efree(embedding_level_list); + efree(outString); + RETURN_FALSE; } Index: php_fribidi.h =================================================================== RCS file: /repository/php4/ext/fribidi/php_fribidi.h,v retrieving revision 1.8 diff -u -r1.8 php_fribidi.h --- php_fribidi.h 9 Sep 2002 09:44:52 -0000 1.8 +++ php_fribidi.h 14 Sep 2002 20:29:59 -0000 @@ -23,6 +23,7 @@ #include "fribidi.h" #include "../standard/info.h" +#include <glib.h> extern zend_module_entry fribidi_module_entry; #define phpext_fribidi_ptr &fribidi_module_entry

« previous php.dev (#88323) next »