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