RE: [PHP-DEV] Patch for GD
| From: | John Coggeshall | Date: | Thu, 03 Apr 2003 03:13:49 +0000 |
| Subject: | RE: [PHP-DEV] Patch for GD | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-624@lists.php.net to get a copy of this message | ||
I'll separate the patches in a minute, but this isn't enabling the
function -- it's just throwing an E_WARNING (probably should
RETURN_FALSE too)... Otherwise you get a not-defined error.
John
-~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~-
John Coggeshall
john at coggeshall dot org http://www.coggeshall.org/
-~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~-
>-----Original Message-----
>From: Ilia A. [mailto:ilia@prohost.org]
>Sent: Wednesday, April 02, 2003 10:09 PM
>To: John Coggeshall; internals@lists.php.net
>Subject: Re: [PHP-DEV] Patch for GD
>
>
>IMO we should not enable a buggy function, the output may be
>un expected and
>if it results in memory corruption we could end with a fairly
>annoying and
>hard to trace problem.
>
>Ilia
>
>On April 2, 2003 09:54 pm, John Coggeshall wrote:
>> Here's a patch for the GD lib.. I'd like to commit this if
>there is no
>> objection. It does a few things:
>>
>> 1) Creates a warning for imagepscopyfont()... It's in the docs and
>> right now its completely commented out in the source... For BC this
>> really should not just completely disappear (even if T1Lib is buggy
>> about it).
>> 2) Cleans up the error reporting done when working with
>T1LIB by using
>> T1Lib's T1_StrError() function to produce meaniful error
>messages when
>> something goes wrong.
>>
>> Diff is attached below..
>>
>> John
>>
>> cvs server: Diffing .
>> Index: gd.c
>> ===================================================================
>> RCS file: /repository/php4/ext/gd/gd.c,v
>> retrieving revision 1.261
>> diff -u -r1.261 gd.c
>> --- gd.c 31 Mar 2003 08:49:19 -0000 1.261
>> +++ gd.c 3 Apr 2003 02:46:45 -0000
>> @@ -282,9 +282,7 @@
>>
>> #ifdef HAVE_LIBT1
>> PHP_FE(imagepsloadfont,
>> NULL)
>> - /*
>> PHP_FE(imagepscopyfont,
>> NULL)
>> - */
>> PHP_FE(imagepsfreefont,
>> NULL)
>> PHP_FE(imagepsencodefont,
>> NULL)
>> PHP_FE(imagepsextendfont,
>> NULL)
>> @@ -3188,21 +3186,7 @@
>> f_ind = T1_AddFont(Z_STRVAL_PP(file));
>>
>> if (f_ind < 0) {
>> - switch (f_ind) {
>> - case -1:
>> - php_error_docref(NULL TSRMLS_CC,
>> E_WARNING, "Couldn't find the font file");
>> - RETURN_FALSE;
>> - break;
>> - case -2:
>> - case -3:
>> - php_error_docref(NULL TSRMLS_CC,
>> E_WARNING, "Memory allocation fault in t1lib");
>> - RETURN_FALSE;
>> - break;
>> - default:
>> - php_error_docref(NULL TSRMLS_CC,
>> E_WARNING, "An unknown error occurred in t1lib");
>> - RETURN_FALSE;
>> - break;
>> - }
>> + php_error_docref(NULL TSRMLS_CC, E_WARNING,
>"T1LIB Error:
>> %s", T1_StrError(f_ind));
>> }
>>
>> if (T1_LoadFont(f_ind)) {
>> @@ -3218,10 +3202,11 @@
>>
>> /* {{{ proto int imagepscopyfont(int font_index)
>> Make a copy of a font for purposes like extending or reenconding
>> */
>> -/* The function in t1lib which this function uses seem to
>be buggy...
>> +/* The function in t1lib which this function uses seem to
>be buggy...
>> */
>> PHP_FUNCTION(imagepscopyfont)
>> {
>> - zval **fnt;
>> + php_error_docref(NULL TSRMLS_CC, E_WARNING, "This function is no
>> longer available");
>> +/* zval **fnt;
>> int l_ind, type;
>> gd_ps_font *nf_ind, *of_ind;
>>
>> @@ -3267,8 +3252,9 @@
>> nf_ind->extend = 1;
>> l_ind = zend_list_insert(nf_ind, le_ps_font);
>> RETURN_LONG(l_ind);
>> -}
>> */
>> +}
>> +
>> /* }}} */
>>
>> /* {{{ proto bool imagepsfreefont(int font_index)
>> @@ -3339,6 +3325,11 @@
>> ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font",
>> le_ps_font);
>>
>> T1_DeleteAllSizes(*f_ind);
>> +
>> + if(Z_DVAL_PP(ext) < 0) {
>> + zend_error(E_WARNING, "Invalid value for parameter 2
>> + (must
>> be greater than zero)");
>> + }
>> +
>> if (T1_ExtendFont(*f_ind, Z_DVAL_PP(ext)) != 0) {
>> RETURN_FALSE;
>> }
>> @@ -3476,7 +3467,7 @@
>>
>> if (!str_path) {
>> if (T1_errno) {
>> - php_error_docref(NULL TSRMLS_CC, E_WARNING,
>> "libt1 returned error %d", T1_errno);
>> + php_error_docref(NULL TSRMLS_CC, E_WARNING,
>> "T1LIB Error: %s", T1_StrError(T1_errno));
>> }
>> RETURN_FALSE;
>> }
>> @@ -3495,7 +3486,7 @@
>> str_img = T1_AAFillOutline(str_path, 0);
>>
>> if (T1_errno) {
>> - php_error_docref(NULL TSRMLS_CC, E_WARNING, "libt1
>> returned error %d", T1_errno);
>> + php_error_docref(NULL TSRMLS_CC, E_WARNING, "T1LIB
>> Error: %s", T1_StrError(T1_errno));
>> RETURN_FALSE;
>> }
>>
>> Index: php_gd.h
>> ===================================================================
>> RCS file: /repository/php4/ext/gd/php_gd.h,v
>> retrieving revision 1.54
>> diff -u -r1.54 php_gd.h
>> --- php_gd.h 31 Mar 2003 08:49:19 -0000 1.54
>> +++ php_gd.h 3 Apr 2003 02:46:45 -0000
>> @@ -157,9 +157,7 @@
>> PHP_FUNCTION(imagettfbbox);
>> PHP_FUNCTION(imagettftext);
>> PHP_FUNCTION(imagepsloadfont);
>> -/*
>> PHP_FUNCTION(imagepscopyfont);
>> -*/
>> PHP_FUNCTION(imagepsfreefont); PHP_FUNCTION(imagepsencodefont);
>> PHP_FUNCTION(imagepsextendfont);
>>
>>
>-~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~-
>> John Coggeshall
>> john at coggeshall dot org
>http://www.coggeshall.org/
>>
>-~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~-
>
>