mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-11 10:58:26 +00:00
8034267: Probabilistic native crash`
Reviewed-by: bae, serb, mschoene
This commit is contained in:
parent
034610f191
commit
3787d7c3aa
@ -177,18 +177,10 @@ static unsigned long ReadTTFontFileFunc(FT_Stream stream,
|
||||
if (numBytes > FILEDATACACHESIZE) {
|
||||
bBuffer = (*env)->NewDirectByteBuffer(env, destBuffer, numBytes);
|
||||
if (bBuffer != NULL) {
|
||||
/* Loop until the read succeeds (or EOF).
|
||||
* This should improve robustness in the event of a problem in
|
||||
* the I/O system. If we find that we ever end up spinning here
|
||||
* we are going to have to do some serious work to recover.
|
||||
* Just returning without reading the data will cause a crash.
|
||||
*/
|
||||
while (bread == 0) {
|
||||
bread = (*env)->CallIntMethod(env,
|
||||
scalerInfo->font2D,
|
||||
sunFontIDs.ttReadBlockMID,
|
||||
bBuffer, offset, numBytes);
|
||||
}
|
||||
bread = (*env)->CallIntMethod(env,
|
||||
scalerInfo->font2D,
|
||||
sunFontIDs.ttReadBlockMID,
|
||||
bBuffer, offset, numBytes);
|
||||
return bread;
|
||||
} else {
|
||||
/* We probably hit bug bug 4845371. For reasons that
|
||||
@ -224,19 +216,10 @@ static unsigned long ReadTTFontFileFunc(FT_Stream stream,
|
||||
(offset + FILEDATACACHESIZE > scalerInfo->fileSize) ?
|
||||
scalerInfo->fileSize - offset : FILEDATACACHESIZE;
|
||||
bBuffer = scalerInfo->directBuffer;
|
||||
/* Loop until all the read succeeds (or EOF).
|
||||
* This should improve robustness in the event of a problem in
|
||||
* the I/O system. If we find that we ever end up spinning here
|
||||
* we are going to have to do some serious work to recover.
|
||||
* Just returning without reading the data will cause a crash.
|
||||
*/
|
||||
while (bread == 0) {
|
||||
bread = (*env)->CallIntMethod(env, scalerInfo->font2D,
|
||||
sunFontIDs.ttReadBlockMID,
|
||||
bBuffer, offset,
|
||||
scalerInfo->fontDataLength);
|
||||
}
|
||||
|
||||
bread = (*env)->CallIntMethod(env, scalerInfo->font2D,
|
||||
sunFontIDs.ttReadBlockMID,
|
||||
bBuffer, offset,
|
||||
scalerInfo->fontDataLength);
|
||||
memcpy(destBuffer, scalerInfo->fontData, numBytes);
|
||||
return numBytes;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user