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:[EMAIL PROTECTED] 
>Sent: Wednesday, April 02, 2003 10:09 PM
>To: John Coggeshall; [EMAIL PROTECTED]
>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/
>> 
>-~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~--~=~-
>
>


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to