1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-20 00:21:35 +00:00

. Fix a double free bug. This is pulled from upstream.

. Bump PORTREVISION.

PR:		210226
Submitted by:	girgen@
This commit is contained in:
Greg Lewis 2016-06-16 06:24:34 +00:00
parent 49b208430e
commit 9c0e7d35bc
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=416952
2 changed files with 53 additions and 1 deletions

View File

@ -2,7 +2,7 @@
PORTNAME= openjdk
PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER:S/^0//}
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= java devel
MASTER_SITES= http://download.java.net/openjdk/jdk${JDK_MAJOR_VERSION}/promoted/b${DIST_BUILD_NUMBER}/:jdk \
https://adopt-openjdk.ci.cloudbees.com/job/jtreg/${JTREG_JENKINS_BUILD}/artifact/:jtreg \

View File

@ -0,0 +1,52 @@
--- jdk/src/share/native/sun/font/freetypeScaler.c
+++ jdk/src/share/native/sun/font/freetypeScaler.c
@@ -60,6 +60,7 @@
JNIEnv* env;
FT_Library library;
FT_Face face;
+ FT_Stream faceStream;
jobject font2D;
jobject directBuffer;
@@ -107,15 +108,10 @@
if (scalerInfo == NULL)
return;
- //apparently Done_Face will only close the stream
- // but will not relase the memory of stream structure.
- // We need to free it explicitly to avoid leak.
- //Direct access to the stream field might be not ideal solution as
- // it is considred to be "private".
- //Alternatively we could have stored pointer to the structure
- // in the scalerInfo but this will increase size of the structure
- // for no good reason
- stream = scalerInfo->face->stream;
+ // FT_Done_Face always closes the stream, but only frees the memory
+ // of the data structure if it was internally allocated by FT.
+ // We hold on to a pointer to the stream structure if we provide it
+ // ourselves, so that we can free it here.
FT_Done_Face(scalerInfo->face);
FT_Done_FreeType(scalerInfo->library);
@@ -128,8 +124,8 @@
free(scalerInfo->fontData);
}
- if (stream != NULL) {
- free(stream);
+ if (scalerInfo->faceStream != NULL) {
+ free(scalerInfo->faceStream);
}
free(scalerInfo);
@@ -302,6 +298,10 @@
&ft_open_args,
indexInCollection,
&scalerInfo->face);
+
+ if (!error) {
+ scalerInfo->faceStream = ftstream;
+ }
}
if (error || scalerInfo->directBuffer == NULL) {
free(ftstream);