diff options
author | Matthieu Herrb <matthieu.herrb@laas.fr> | 2013-05-08 19:33:09 +0200 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2016-10-12 09:34:39 +0200 |
commit | 838108c296cb739350456f49431b57821c78b15c (patch) | |
tree | 2f6dbf0623c30806fda847c23646a3b396e62356 /nx-X11/lib/X11 | |
parent | dc749a457d62b330051e9fb709960951e05de41b (diff) | |
download | nx-libs-838108c296cb739350456f49431b57821c78b15c.tar.gz nx-libs-838108c296cb739350456f49431b57821c78b15c.tar.bz2 nx-libs-838108c296cb739350456f49431b57821c78b15c.zip |
XListFontsWithInfo: Re-decrement flist[0] before calling free() on it.
Freeing a pointer that wasn't returned by malloc() is undefined
behavior and produces an error with OpenBSD's implementation.
Signed-off-by: Matthieu Herrb <matthieu.herrb@laas.fr>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Signed-off-by: Julien Cristau <jcristau@debian.org>
Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
Diffstat (limited to 'nx-X11/lib/X11')
-rw-r--r-- | nx-X11/lib/X11/FontInfo.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/nx-X11/lib/X11/FontInfo.c b/nx-X11/lib/X11/FontInfo.c index 4b295a5eb..0cb5b1910 100644 --- a/nx-X11/lib/X11/FontInfo.c +++ b/nx-X11/lib/X11/FontInfo.c @@ -174,8 +174,10 @@ XFontStruct **info) /* RETURN */ badmem: /* Free all memory allocated by this function. */ for (j=(i-1); (j >= 0); j--) { - Xfree(flist[j]); - if (finfo[j].properties) Xfree((char *) finfo[j].properties); + if (j == 0) + flist[j]--; /* was incremented above */ + Xfree(flist[j]); + if (finfo[j].properties) Xfree((char *) finfo[j].properties); } if (flist) Xfree((char *) flist); if (finfo) Xfree((char *) finfo); |