cvs: php-src(PHP_4_3) / NEWS /ext/gd/libgd gdft.c

From: Date: Mon, 15 Dec 2003 20:34:58 +0000
Subject: cvs: php-src(PHP_4_3) / NEWS /ext/gd/libgd gdft.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-25199@lists.php.net to get a copy of this message
iliaa Mon Dec 15 15:34:58 2003 EDT Modified files: (Branch: PHP_4_3) /php-src NEWS /php-src/ext/gd/libgd gdft.c Log: MFH: Fixed bug #26635 (fixed look up for fonts in the current directory w/ZTS) Index: php-src/NEWS diff -u php-src/NEWS:1.1247.2.502 php-src/NEWS:1.1247.2.503 --- php-src/NEWS:1.1247.2.502 Sun Dec 14 20:18:46 2003 +++ php-src/NEWS Mon Dec 15 15:34:56 2003 @@ -7,6 +7,8 @@ (Jani) - Fixed header handler in NSAPI SAPI module (header->replace was ignored, send_default_content_type now sends value from php.ini). (Uwe Schindler) +- Fixed bug #26635 (fixed look up for fonts in the current directory w/ZTS). + (Ilia) - Fixed bug #26604 (Apache2 SAPIs implicitly disable Keep-Alive). (Ilia) - Fixed bug #26595 (ext/domxml: XSLT_NAMESPACE undeclared). (Christian) - Fixed bug #26565 (strtotime("this month") resolving to the wrong month). Index: php-src/ext/gd/libgd/gdft.c diff -u php-src/ext/gd/libgd/gdft.c:1.11.2.11 php-src/ext/gd/libgd/gdft.c:1.11.2.12 --- php-src/ext/gd/libgd/gdft.c:1.11.2.11 Fri Nov 21 19:55:29 2003 +++ php-src/ext/gd/libgd/gdft.c Mon Dec 15 15:34:57 2003 @@ -358,7 +358,7 @@ int font_found = 0; unsigned short platform, encoding; char *fontsearchpath, *fontlist; - char *fullname = NULL; + char fullname[MAXPATHLEN], cur_dir[MAXPATHLEN]; char *name, *path=NULL, *dir; char *strtok_ptr; FT_Error err; @@ -384,38 +384,43 @@ for (name = gd_strtok_r (fontlist, LISTSEPARATOR, &strtok_ptr); name; name = gd_strtok_r (0, LISTSEPARATOR, &strtok_ptr)) { /* make a fresh copy each time - strtok corrupts it. */ path = gdEstrdup (fontsearchpath); - - /* - * Allocate an oversized buffer that is guaranteed to be - * big enough for all paths to be tested. - */ - fullname = gdRealloc (fullname, strlen (fontsearchpath) + strlen (name) + 6); - + /* if name is an absolute filename then test directly */ if (*name == '/' || (name[0] != 0 && name[1] == ':' && (name[2] == '/' || name[2] == '\\'))) { - sprintf(fullname, "%s", name); + snprintf(fullname, sizeof(fullname) - 1, "%s", name); if (access(fullname, R_OK) == 0) { font_found++; break; } } for (dir = strtok (path, PATHSEPARATOR); dir; dir = strtok (0, PATHSEPARATOR)) { - sprintf(fullname, "%s/%s", dir, name); - if (access (fullname, R_OK) == 0) { + if (!strcmp(dir, ".")) { +#if HAVE_GETCWD + dir = VCWD_GETCWD(cur_dir, MAXPATHLEN); +#elif HAVE_GETWD + dir = VCWD_GETWD(cur_dir); +#endif + if (!dir) { + continue; + } + } + + snprintf(fullname, sizeof(fullname) - 1, "%s/%s", dir, name); + if (access(fullname, R_OK) == 0) { font_found++; break; } - sprintf(fullname, "%s/%s.ttf", dir, name); - if (access (fullname, R_OK) == 0) { + snprintf(fullname, sizeof(fullname) - 1, "%s/%s.ttf", dir, name); + if (access(fullname, R_OK) == 0) { font_found++; break; } - sprintf(fullname, "%s/%s.pfa", dir, name); + snprintf(fullname, sizeof(fullname) - 1, "%s/%s.pfa", dir, name); if (access(fullname, R_OK) == 0) { font_found++; break; } - sprintf (fullname, "%s/%s.pfb", dir, name); + snprintf(fullname, sizeof(fullname) - 1, "%s/%s.pfb", dir, name); if (access(fullname, R_OK) == 0) { font_found++; break; @@ -437,9 +442,6 @@ if (!font_found) { gdPFree(a->fontlist); gdPFree(a); - if (fullname) { - gdFree(fullname); - } *error = "Could not find/open font"; return NULL; } @@ -448,13 +450,9 @@ if (err) { gdPFree(a->fontlist); gdPFree(a); - if (fullname) { - gdFree(fullname); - } *error = "Could not read font"; return NULL; } - gdFree(fullname); /* FIXME - This mapping stuff is imcomplete - where is the spec? */

« previous php.cvs (#25199) next »