]> granicus.if.org Git - graphviz/commitdiff
replace // with #if 0
authorellson <devnull@localhost>
Tue, 18 Oct 2005 18:55:50 +0000 (18:55 +0000)
committerellson <devnull@localhost>
Tue, 18 Oct 2005 18:55:50 +0000 (18:55 +0000)
lib/gd/depcomp [new file with mode: 0644]
lib/gd/err.out [new file with mode: 0644]
lib/gd/gd-2.0.33.patch [new file with mode: 0644]

diff --git a/lib/gd/depcomp b/lib/gd/depcomp
new file mode 100644 (file)
index 0000000..807b991
--- /dev/null
@@ -0,0 +1,423 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+   dir=`echo "$object" | sed 's,/.*$,/,'`
+   if test "$dir" = "$object"; then
+      dir=
+   fi
+   # FIXME: should be _deps on DOS.
+   depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  This file always lives in the current directory.
+  # Also, the AIX compiler puts `$object:' at the start of each line;
+  # $object doesn't have directory information.
+  stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  outname="$stripped.o"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir.libs/$base.d"
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2"
+      exit $stat
+   fi
+
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   else
+      tmpdepfile="$tmpdepfile2"
+   fi
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a space and a tab in the [].
+      sed -e 's,^.*\.[a-z]*:[  ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.  We will use -o /dev/null later,
+  # however we can't do the remplacement now because
+  # `-o $object' might simply not be used
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[      ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    -*)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::   \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
diff --git a/lib/gd/err.out b/lib/gd/err.out
new file mode 100644 (file)
index 0000000..484ad54
--- /dev/null
@@ -0,0 +1,63 @@
+------------- New fontwheel --------------
+times
+.....Hello, there!
+------------------------------------------
+------------- New fontwheel --------------
+times
+.....Hello, there!
+------------------------------------------
+------------- New fontwheel --------------
+arial
+.....Hello, there!
+------------------------------------------
+------------- New fontwheel --------------
+arial
+.....Hello, there!
+------------------------------------------
+------------- New fontwheel --------------
+times
+Hello, there!
+------------------------------------------
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+------------- New fontwheel --------------
+times
+Hello, there!
+------------------------------------------
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+Could not find/open font
+------------- New fontwheel --------------
+arial
+Hello, there!
+------------------------------------------
+------------- New fontwheel --------------
+arial
+Hello
+there!
+------------------------------------------
diff --git a/lib/gd/gd-2.0.33.patch b/lib/gd/gd-2.0.33.patch
new file mode 100644 (file)
index 0000000..c559bb9
--- /dev/null
@@ -0,0 +1,390 @@
+diff -rub gd-2.0.33/entities.h gd-2.0.33jce3/entities.h
+--- gd-2.0.33/entities.h       2004-10-27 10:22:46.000000000 -0400
++++ gd-2.0.33jce3/entities.h   2005-08-15 11:23:47.000000000 -0400
+@@ -11,7 +11,7 @@
+ extern "C" {
+ #endif
+-struct entities_s {
++static struct entities_s {
+       char    *name;
+       int     value;
+ } entities[] = {
+diff -rub gd-2.0.33/entities.tcl gd-2.0.33jce3/entities.tcl
+--- gd-2.0.33/entities.tcl     2004-10-27 10:22:48.000000000 -0400
++++ gd-2.0.33jce3/entities.tcl 2005-08-15 10:19:33.000000000 -0400
+@@ -32,7 +32,7 @@
+ puts $f "extern \"C\" {"
+ puts $f "#endif"
+ puts $f ""
+-puts $f "struct entities_s {"
++puts $f "static struct entities_s {"
+ puts $f "     char    *name;"
+ puts $f "     int     value;"
+ puts $f "} entities\[\] = {"
+diff -rub gd-2.0.33/gd.c gd-2.0.33jce3/gd.c
+--- gd-2.0.33/gd.c     2004-11-01 13:28:56.000000000 -0500
++++ gd-2.0.33jce3/gd.c 2005-08-15 11:23:47.000000000 -0400
+@@ -72,9 +72,16 @@
+   int i;
+   gdImagePtr im;
+   im = (gdImage *) gdMalloc (sizeof (gdImage));
++  if (!im)
++    return NULL;
+   memset (im, 0, sizeof (gdImage));
+   /* Row-major ever since gd 1.3 */
+   im->pixels = (unsigned char **) gdMalloc (sizeof (unsigned char *) * sy);
++  if (!im->pixels)
++    {
++      free(im);
++      return NULL;
++    }
+   im->polyInts = 0;
+   im->polyAllocated = 0;
+   im->brush = 0;
+@@ -84,6 +91,15 @@
+     {
+       /* Row-major ever since gd 1.3 */
+       im->pixels[i] = (unsigned char *) gdCalloc (sx, sizeof (unsigned char));
++      if (!im->pixels[i]) 
++      {
++        for (--i ; i >= 0; i--)
++          {
++            gdFree(im->pixels[i]);
++          }
++        gdFree(im);
++        return NULL;
++      }
+     }
+   im->sx = sx;
+   im->sy = sy;
+diff -rub gd-2.0.33/gd_gif_in.c gd-2.0.33jce3/gd_gif_in.c
+--- gd-2.0.33/gd_gif_in.c      2004-11-01 13:28:56.000000000 -0500
++++ gd-2.0.33jce3/gd_gif_in.c  2005-08-15 11:23:47.000000000 -0400
+@@ -1,3 +1,7 @@
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include <stdio.h>
+ #include <math.h>
+ #include <string.h>
+diff -rub gd-2.0.33/gd_gif_out.c gd-2.0.33jce3/gd_gif_out.c
+--- gd-2.0.33/gd_gif_out.c     2004-11-02 08:41:00.000000000 -0500
++++ gd-2.0.33jce3/gd_gif_out.c 2005-08-15 11:23:47.000000000 -0400
+@@ -1,3 +1,7 @@
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include <stdio.h>
+ #include <math.h>
+ #include <string.h>
+diff -rub gd-2.0.33/gd_topal.c gd-2.0.33jce3/gd_topal.c
+--- gd-2.0.33/gd_topal.c       2004-10-28 14:12:08.000000000 -0400
++++ gd-2.0.33jce3/gd_topal.c   2005-08-15 11:23:47.000000000 -0400
+@@ -49,6 +49,10 @@
+   #define ORIGINAL_LIB_JPEG_REVERSE_ODD_ROWS
+  */
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include <string.h>
+ #include "gd.h"
+ #include "gdhelpers.h"
+diff -rub gd-2.0.33/gdfontg.c gd-2.0.33jce3/gdfontg.c
+--- gd-2.0.33/gdfontg.c        2004-10-27 10:22:04.000000000 -0400
++++ gd-2.0.33jce3/gdfontg.c    2005-08-15 11:23:47.000000000 -0400
+@@ -10,6 +10,9 @@
+    "Libor Skarvada, libor@informatics.muni.cz"
+  */
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
+ #include "gdfontg.h"
+diff -rub gd-2.0.33/gdfontl.c gd-2.0.33jce3/gdfontl.c
+--- gd-2.0.33/gdfontl.c        2004-10-27 10:22:04.000000000 -0400
++++ gd-2.0.33jce3/gdfontl.c    2005-08-15 11:23:47.000000000 -0400
+@@ -11,6 +11,9 @@
+    "Libor Skarvada, libor@informatics.muni.cz"
+  */
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
+ #include "gdfontl.h"
+diff -rub gd-2.0.33/gdfontmb.c gd-2.0.33jce3/gdfontmb.c
+--- gd-2.0.33/gdfontmb.c       2004-10-27 10:22:04.000000000 -0400
++++ gd-2.0.33jce3/gdfontmb.c   2005-08-15 11:23:47.000000000 -0400
+@@ -9,6 +9,9 @@
+    No copyright info was found in the original bdf.
+  */
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
+ #include "gdfontmb.h"
+diff -rub gd-2.0.33/gdfonts.c gd-2.0.33jce3/gdfonts.c
+--- gd-2.0.33/gdfonts.c        2004-10-27 10:22:04.000000000 -0400
++++ gd-2.0.33jce3/gdfonts.c    2005-08-15 11:23:47.000000000 -0400
+@@ -7,6 +7,9 @@
+    No copyright info was found in the original bdf.
+  */
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
+ #include "gdfonts.h"
+diff -rub gd-2.0.33/gdfontt.c gd-2.0.33jce3/gdfontt.c
+--- gd-2.0.33/gdfontt.c        2004-10-27 10:22:04.000000000 -0400
++++ gd-2.0.33jce3/gdfontt.c    2005-08-15 11:23:47.000000000 -0400
+@@ -10,6 +10,9 @@
+    "Libor Skarvada, libor@informatics.muni.cz"
+  */
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
+ #include "gdfontt.h"
+diff -rub gd-2.0.33/gdft.c gd-2.0.33jce3/gdft.c
+--- gd-2.0.33/gdft.c   2004-11-02 16:00:48.000000000 -0500
++++ gd-2.0.33jce3/gdft.c       2005-08-15 11:23:47.000000000 -0400
+@@ -832,7 +832,7 @@
+   FT_Matrix matrix;
+   FT_Vector penf, oldpenf, delta, total_min = {0,0}, total_max = {0,0}, glyph_min, glyph_max;
+   FT_Face face;
+-  FT_CharMap charmap;
++  FT_CharMap charmap = NULL;
+   FT_Glyph image;
+   FT_GlyphSlot slot;
+   FT_Error err;
+@@ -966,8 +966,10 @@
+         }
+     }
++#if 0
+   if (fg < 0)
+       render_mode |= FT_LOAD_MONOCHROME;
++#endif
+   /* find requested charmap */
+   encodingfound = 0;
+@@ -1208,12 +1210,14 @@
+               so we don't have to recheck for the terminating number */
+         if (! xshow_alloc) {
+               xshow_alloc = 100;
+-              strex->xshow = malloc(xshow_alloc);
++              strex->xshow = gdMalloc(xshow_alloc);
+               xshow_pos = 0;
+         } 
+         else if (xshow_pos + 20 > xshow_alloc) {
+               xshow_alloc += 100;
+               strex->xshow = realloc(strex->xshow, xshow_alloc);
++              if (! strex->xshow)
++                  return "Problem allocating memory with realloc";
+       }
+         xshow_pos += sprintf(strex->xshow + xshow_pos, "%g ",
+               (double)(penf.x - oldpenf.x) * hdpi / (64 * METRIC_RES));
+@@ -1322,10 +1326,8 @@
+   if (brect)
+     {                         /* only if need brect */
+-      double dpix, dpiy;
+-      
+-      dpix = 64 * METRIC_RES / hdpi;
+-      dpiy = 64 * METRIC_RES / vdpi;
++      double scalex = (double)hdpi / (64 * METRIC_RES);
++      double scaley = (double)vdpi / (64 * METRIC_RES);
+       /* increase by 1 pixel to allow for rounding */
+       total_min.x -= METRIC_RES;
+@@ -1334,14 +1336,14 @@
+       total_max.y += METRIC_RES;
+  
+       /* rotate bounding rectangle, scale and round to int pixels, and translate */
+-      brect[0] = x + (total_min.x * cos_a + total_max.y * sin_a)/dpix;
+-      brect[1] = y - (total_min.x * sin_a - total_max.y * cos_a)/dpiy;
+-      brect[2] = x + (total_max.x * cos_a + total_max.y * sin_a)/dpix;
+-      brect[3] = y - (total_max.x * sin_a - total_max.y * cos_a)/dpiy;
+-      brect[4] = x + (total_max.x * cos_a + total_min.y * sin_a)/dpix;
+-      brect[5] = y - (total_max.x * sin_a - total_min.y * cos_a)/dpiy;
+-      brect[6] = x + (total_min.x * cos_a + total_min.y * sin_a)/dpix;
+-      brect[7] = y - (total_min.x * sin_a - total_min.y * cos_a)/dpiy;
++      brect[0] = x + (total_min.x * cos_a + total_max.y * sin_a)*scalex;
++      brect[1] = y - (total_min.x * sin_a - total_max.y * cos_a)*scaley;
++      brect[2] = x + (total_max.x * cos_a + total_max.y * sin_a)*scalex;
++      brect[3] = y - (total_max.x * sin_a - total_max.y * cos_a)*scaley;
++      brect[4] = x + (total_max.x * cos_a + total_min.y * sin_a)*scalex;
++      brect[5] = y - (total_max.x * sin_a - total_min.y * cos_a)*scaley;
++      brect[6] = x + (total_min.x * cos_a + total_min.y * sin_a)*scalex;
++      brect[7] = y - (total_min.x * sin_a - total_min.y * cos_a)*scaley;
+     }
+   FT_Done_Size (platform_independent);
+@@ -1510,6 +1512,66 @@
+ #endif /* HAVE_LIBFONTCONFIG */
++#ifdef WIN32
++#define FONTSFX "\\FONTS"
++#define GDP     "GDFONTPATH="
++#define F_OK 0                        /* Needed in Windows */
++
++/* chkWinFontPath:
++ * See if environment variable envv is defined and
++ * if the path $envv/FONTS exists. If so, return the path,
++ * else return NULL.
++ */
++static char*
++chkWinFontPath (char* envv)
++{
++      char* root;
++      char* path;
++      root = getenv(envv);
++      if (!root) return NULL;
++      path = (char*)gdMalloc(strlen(root)+strlen(FONTSFX)+1);
++      strcpy (path, root);
++      strcat (path, FONTSFX);
++      if (access (path, F_OK) == 0) { /* success */
++              return path;
++      }
++      else {
++              gdFree (path);
++              return NULL;
++      }
++}
++
++/* getWinFontPath:
++ * Find Windows system font directory. Use environment variables to
++ * find system directory with a FONTS subdirectory.
++ * If successful, set GDFONTPATH to this value, for caching, and return it.
++ * Else, return NULL
++ */
++static char*
++getWinFontPath ()
++{
++      char* path = chkWinFontPath("SystemRoot");
++      if (!path) {
++              path = chkWinFontPath ("WinDir");
++              if (!path)
++                      return NULL;
++      }
++#ifdef HAVE_SETENV
++      setenv("GDFONTPATH", path, 1);
++#else
++      {
++              char* ebuf = (char*)gdMalloc(strlen(GDP)+strlen(path)+1);
++              int rv;
++              strcpy(ebuf,GDP);
++              strcat(ebuf,path);
++              rv = putenv(ebuf);
++      }
++#endif
++      return path;
++}
++
++#endif  /* WIN32 */
++
+ /* Look up font using font names as file names. */
+ static char * font_path(char **fontpath, char *name_list)
+ {
+@@ -1524,6 +1586,10 @@
+    */
+   *fontpath = NULL;
+   fontsearchpath = getenv ("GDFONTPATH");
++#ifdef WIN32
++  if (!fontsearchpath)
++    fontsearchpath = getWinFontPath ();
++#endif
+   if (!fontsearchpath)
+     fontsearchpath = DEFAULT_FONTPATH;
+   fontlist = strdup (name_list);
+diff -rub gd-2.0.33/gdfx.c gd-2.0.33jce3/gdfx.c
+--- gd-2.0.33/gdfx.c   2004-10-27 10:22:07.000000000 -0400
++++ gd-2.0.33jce3/gdfx.c       2005-08-15 11:23:47.000000000 -0400
+@@ -1,3 +1,7 @@
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include "gd.h"
+ #include <math.h>
+diff -rub gd-2.0.33/gdhelpers.h gd-2.0.33jce3/gdhelpers.h
+--- gd-2.0.33/gdhelpers.h      2004-10-28 13:09:12.000000000 -0400
++++ gd-2.0.33jce3/gdhelpers.h  2005-08-15 11:23:47.000000000 -0400
+@@ -29,30 +29,38 @@
+ /* 2.0.16: portable mutex support for thread safety. */
+-#ifdef WIN32
+-/* 2.0.18: must include windows.h to get CRITICAL_SECTION. */
+-#include <windows.h>
+-#define gdMutexDeclare(x) CRITICAL_SECTION x
+-#define gdMutexSetup(x) InitializeCriticalSection(&x)
+-#define gdMutexShutdown(x) DeleteCriticalSection(&x)
+-#define gdMutexLock(x) EnterCriticalSection(&x)
+-#define gdMutexUnlock(x) LeaveCriticalSection(&x)
+-#else
+-#ifdef HAVE_PTHREAD
+-#include <pthread.h>
+-#define gdMutexDeclare(x) pthread_mutex_t x
+-#define gdMutexSetup(x) pthread_mutex_init(&x, 0)
+-#define gdMutexShutdown(x) pthread_mutex_destroy(&x)
+-#define gdMutexLock(x) pthread_mutex_lock(&x)
+-#define gdMutexUnlock(x) pthread_mutex_unlock(&x)
++#ifdef DISABLE_THREADS
++#  define gdMutexDeclare(x)
++#  define gdMutexSetup(x)
++#  define gdMutexShutdown(x)
++#  define gdMutexLock(x)
++#  define gdMutexUnlock(x)
+ #else
+-#define gdMutexDeclare(x)
+-#define gdMutexSetup(x) 
+-#define gdMutexShutdown(x) 
+-#define gdMutexLock(x) 
+-#define gdMutexUnlock(x) 
+-#endif /* HAVE_PTHREAD */
+-#endif /* WIN32 */
++#  ifdef WIN32
++/* 2.0.18: must include windows.h to get CRITICAL_SECTION. */
++#    include <windows.h>
++#    define gdMutexDeclare(x) CRITICAL_SECTION x
++#    define gdMutexSetup(x) InitializeCriticalSection(&x)
++#    define gdMutexShutdown(x) DeleteCriticalSection(&x)
++#    define gdMutexLock(x) EnterCriticalSection(&x)
++#    define gdMutexUnlock(x) LeaveCriticalSection(&x)
++#  else
++#    ifdef HAVE_PTHREAD
++#      include <pthread.h>
++#      define gdMutexDeclare(x) pthread_mutex_t x
++#      define gdMutexSetup(x) pthread_mutex_init(&x, 0)
++#      define gdMutexShutdown(x) pthread_mutex_destroy(&x)
++#      define gdMutexLock(x) pthread_mutex_lock(&x)
++#      define gdMutexUnlock(x) pthread_mutex_unlock(&x)
++#    else
++#      define gdMutexDeclare(x)
++#      define gdMutexSetup(x) 
++#      define gdMutexShutdown(x) 
++#      define gdMutexLock(x) 
++#      define gdMutexUnlock(x) 
++#    endif /* HAVE_PTHREAD */
++#  endif /* WIN32 */
++#endif /* DISABLE_THREADS */
+ #endif /* GDHELPERS_H */