Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
07d094ed
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
07d094ed
编写于
5月 27, 2014
作者:
M
mullan
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
c203e727
e5bff349
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
50 addition
and
10 deletion
+50
-10
src/share/classes/sun/awt/image/BytePackedRaster.java
src/share/classes/sun/awt/image/BytePackedRaster.java
+4
-4
src/share/native/sun/font/layout/ContextualSubstSubtables.cpp
...share/native/sun/font/layout/ContextualSubstSubtables.cpp
+46
-6
未找到文件。
src/share/classes/sun/awt/image/BytePackedRaster.java
浏览文件 @
07d094ed
...
@@ -1393,10 +1393,10 @@ public class BytePackedRaster extends SunWritableRaster {
...
@@ -1393,10 +1393,10 @@ public class BytePackedRaster extends SunWritableRaster {
throw
new
RasterFormatException
(
"Invalid scanline stride"
);
throw
new
RasterFormatException
(
"Invalid scanline stride"
);
}
}
int
lastbit
=
(
dataBitOffset
long
lastbit
=
(
long
)
dataBitOffset
+
(
height
-
1
)
*
scanlineStride
*
8
+
(
long
)
(
height
-
1
)
*
(
long
)
scanlineStride
*
8
+
(
width
-
1
)
*
pixelBitStride
+
(
long
)
(
width
-
1
)
*
(
long
)
pixelBitStride
+
pixelBitStride
-
1
)
;
+
(
long
)
pixelBitStride
-
1
;
if
(
lastbit
<
0
||
lastbit
/
8
>=
data
.
length
)
{
if
(
lastbit
<
0
||
lastbit
/
8
>=
data
.
length
)
{
throw
new
RasterFormatException
(
"raster dimensions overflow "
+
throw
new
RasterFormatException
(
"raster dimensions overflow "
+
"array bounds"
);
"array bounds"
);
...
...
src/share/native/sun/font/layout/ContextualSubstSubtables.cpp
浏览文件 @
07d094ed
...
@@ -243,12 +243,22 @@ le_uint32 ContextualSubstitutionFormat1Subtable::process(const LETableReference
...
@@ -243,12 +243,22 @@ le_uint32 ContextualSubstitutionFormat1Subtable::process(const LETableReference
le_uint16
srSetCount
=
SWAPW
(
subRuleSetCount
);
le_uint16
srSetCount
=
SWAPW
(
subRuleSetCount
);
if
(
coverageIndex
<
srSetCount
)
{
if
(
coverageIndex
<
srSetCount
)
{
LEReferenceToArrayOf
<
Offset
>
subRuleSetTableOffsetArrayRef
(
base
,
success
,
&
subRuleSetTableOffsetArray
[
coverageIndex
],
1
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
Offset
subRuleSetTableOffset
=
SWAPW
(
subRuleSetTableOffsetArray
[
coverageIndex
]);
Offset
subRuleSetTableOffset
=
SWAPW
(
subRuleSetTableOffsetArray
[
coverageIndex
]);
LEReferenceTo
<
SubRuleSetTable
>
LEReferenceTo
<
SubRuleSetTable
>
subRuleSetTable
(
base
,
success
,
(
const
SubRuleSetTable
*
)
((
char
*
)
this
+
subRuleSetTableOffset
));
subRuleSetTable
(
base
,
success
,
(
const
SubRuleSetTable
*
)
((
char
*
)
this
+
subRuleSetTableOffset
));
le_uint16
subRuleCount
=
SWAPW
(
subRuleSetTable
->
subRuleCount
);
le_uint16
subRuleCount
=
SWAPW
(
subRuleSetTable
->
subRuleCount
);
le_int32
position
=
glyphIterator
->
getCurrStreamPosition
();
le_int32
position
=
glyphIterator
->
getCurrStreamPosition
();
LEReferenceToArrayOf
<
Offset
>
subRuleTableOffsetArrayRef
(
base
,
success
,
subRuleSetTable
->
subRuleTableOffsetArray
,
subRuleCount
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
for
(
le_uint16
subRule
=
0
;
subRule
<
subRuleCount
;
subRule
+=
1
)
{
for
(
le_uint16
subRule
=
0
;
subRule
<
subRuleCount
;
subRule
+=
1
)
{
Offset
subRuleTableOffset
=
Offset
subRuleTableOffset
=
SWAPW
(
subRuleSetTable
->
subRuleTableOffsetArray
[
subRule
]);
SWAPW
(
subRuleSetTable
->
subRuleTableOffsetArray
[
subRule
]);
...
@@ -301,13 +311,22 @@ le_uint32 ContextualSubstitutionFormat2Subtable::process(const LETableReference
...
@@ -301,13 +311,22 @@ le_uint32 ContextualSubstitutionFormat2Subtable::process(const LETableReference
glyphIterator
->
getCurrGlyphID
(),
glyphIterator
->
getCurrGlyphID
(),
success
);
success
);
if
(
setClass
<
scSetCount
&&
subClassSetTableOffsetArray
[
setClass
]
!=
0
)
{
if
(
setClass
<
scSetCount
)
{
LEReferenceToArrayOf
<
Offset
>
subClassSetTableOffsetArrayRef
(
base
,
success
,
subClassSetTableOffsetArray
,
setClass
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
if
(
subClassSetTableOffsetArray
[
setClass
]
!=
0
)
{
Offset
subClassSetTableOffset
=
SWAPW
(
subClassSetTableOffsetArray
[
setClass
]);
Offset
subClassSetTableOffset
=
SWAPW
(
subClassSetTableOffsetArray
[
setClass
]);
LEReferenceTo
<
SubClassSetTable
>
LEReferenceTo
<
SubClassSetTable
>
subClassSetTable
(
base
,
success
,
(
const
SubClassSetTable
*
)
((
char
*
)
this
+
subClassSetTableOffset
));
subClassSetTable
(
base
,
success
,
(
const
SubClassSetTable
*
)
((
char
*
)
this
+
subClassSetTableOffset
));
le_uint16
subClassRuleCount
=
SWAPW
(
subClassSetTable
->
subClassRuleCount
);
le_uint16
subClassRuleCount
=
SWAPW
(
subClassSetTable
->
subClassRuleCount
);
le_int32
position
=
glyphIterator
->
getCurrStreamPosition
();
le_int32
position
=
glyphIterator
->
getCurrStreamPosition
();
LEReferenceToArrayOf
<
Offset
>
subClassRuleTableOffsetArrayRef
(
base
,
success
,
subClassSetTable
->
subClassRuleTableOffsetArray
,
subClassRuleCount
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
for
(
le_uint16
scRule
=
0
;
scRule
<
subClassRuleCount
;
scRule
+=
1
)
{
for
(
le_uint16
scRule
=
0
;
scRule
<
subClassRuleCount
;
scRule
+=
1
)
{
Offset
subClassRuleTableOffset
=
Offset
subClassRuleTableOffset
=
SWAPW
(
subClassSetTable
->
subClassRuleTableOffsetArray
[
scRule
]);
SWAPW
(
subClassSetTable
->
subClassRuleTableOffsetArray
[
scRule
]);
...
@@ -331,6 +350,7 @@ le_uint32 ContextualSubstitutionFormat2Subtable::process(const LETableReference
...
@@ -331,6 +350,7 @@ le_uint32 ContextualSubstitutionFormat2Subtable::process(const LETableReference
glyphIterator
->
setCurrStreamPosition
(
position
);
glyphIterator
->
setCurrStreamPosition
(
position
);
}
}
}
}
}
// XXX If we get here, the table is mal-formed...
// XXX If we get here, the table is mal-formed...
}
}
...
@@ -442,13 +462,22 @@ le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LETableRe
...
@@ -442,13 +462,22 @@ le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LETableRe
le_uint16
srSetCount
=
SWAPW
(
chainSubRuleSetCount
);
le_uint16
srSetCount
=
SWAPW
(
chainSubRuleSetCount
);
if
(
coverageIndex
<
srSetCount
)
{
if
(
coverageIndex
<
srSetCount
)
{
LEReferenceToArrayOf
<
Offset
>
chainSubRuleSetTableOffsetArrayRef
(
base
,
success
,
chainSubRuleSetTableOffsetArray
,
coverageIndex
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
Offset
chainSubRuleSetTableOffset
=
SWAPW
(
chainSubRuleSetTableOffsetArray
[
coverageIndex
]);
Offset
chainSubRuleSetTableOffset
=
SWAPW
(
chainSubRuleSetTableOffsetArray
[
coverageIndex
]);
LEReferenceTo
<
ChainSubRuleSetTable
>
LEReferenceTo
<
ChainSubRuleSetTable
>
chainSubRuleSetTable
(
base
,
success
,
(
const
ChainSubRuleSetTable
*
)
((
char
*
)
this
+
chainSubRuleSetTableOffset
));
chainSubRuleSetTable
(
base
,
success
,
(
const
ChainSubRuleSetTable
*
)
((
char
*
)
this
+
chainSubRuleSetTableOffset
));
le_uint16
chainSubRuleCount
=
SWAPW
(
chainSubRuleSetTable
->
chainSubRuleCount
);
le_uint16
chainSubRuleCount
=
SWAPW
(
chainSubRuleSetTable
->
chainSubRuleCount
);
le_int32
position
=
glyphIterator
->
getCurrStreamPosition
();
le_int32
position
=
glyphIterator
->
getCurrStreamPosition
();
GlyphIterator
tempIterator
(
*
glyphIterator
,
emptyFeatureList
);
GlyphIterator
tempIterator
(
*
glyphIterator
,
emptyFeatureList
);
LEReferenceToArrayOf
<
Offset
>
chainSubRuleTableOffsetArrayRef
(
base
,
success
,
chainSubRuleSetTable
->
chainSubRuleTableOffsetArray
,
chainSubRuleCount
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
for
(
le_uint16
subRule
=
0
;
subRule
<
chainSubRuleCount
;
subRule
+=
1
)
{
for
(
le_uint16
subRule
=
0
;
subRule
<
chainSubRuleCount
;
subRule
+=
1
)
{
Offset
chainSubRuleTableOffset
=
Offset
chainSubRuleTableOffset
=
SWAPW
(
chainSubRuleSetTable
->
chainSubRuleTableOffsetArray
[
subRule
]);
SWAPW
(
chainSubRuleSetTable
->
chainSubRuleTableOffsetArray
[
subRule
]);
...
@@ -530,6 +559,11 @@ le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LETableRe
...
@@ -530,6 +559,11 @@ le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LETableRe
le_int32
setClass
=
inputClassDefinitionTable
->
getGlyphClass
(
inputClassDefinitionTable
,
le_int32
setClass
=
inputClassDefinitionTable
->
getGlyphClass
(
inputClassDefinitionTable
,
glyphIterator
->
getCurrGlyphID
(),
glyphIterator
->
getCurrGlyphID
(),
success
);
success
);
LEReferenceToArrayOf
<
Offset
>
chainSubClassSetTableOffsetArrayRef
(
base
,
success
,
chainSubClassSetTableOffsetArray
,
setClass
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
if
(
setClass
<
scSetCount
&&
chainSubClassSetTableOffsetArray
[
setClass
]
!=
0
)
{
if
(
setClass
<
scSetCount
&&
chainSubClassSetTableOffsetArray
[
setClass
]
!=
0
)
{
Offset
chainSubClassSetTableOffset
=
SWAPW
(
chainSubClassSetTableOffsetArray
[
setClass
]);
Offset
chainSubClassSetTableOffset
=
SWAPW
(
chainSubClassSetTableOffsetArray
[
setClass
]);
...
@@ -538,7 +572,11 @@ le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LETableRe
...
@@ -538,7 +572,11 @@ le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LETableRe
le_uint16
chainSubClassRuleCount
=
SWAPW
(
chainSubClassSetTable
->
chainSubClassRuleCount
);
le_uint16
chainSubClassRuleCount
=
SWAPW
(
chainSubClassSetTable
->
chainSubClassRuleCount
);
le_int32
position
=
glyphIterator
->
getCurrStreamPosition
();
le_int32
position
=
glyphIterator
->
getCurrStreamPosition
();
GlyphIterator
tempIterator
(
*
glyphIterator
,
emptyFeatureList
);
GlyphIterator
tempIterator
(
*
glyphIterator
,
emptyFeatureList
);
LEReferenceToArrayOf
<
Offset
>
chainSubClassRuleTableOffsetArrayRef
(
base
,
success
,
chainSubClassSetTable
->
chainSubClassRuleTableOffsetArray
,
chainSubClassRuleCount
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
for
(
le_uint16
scRule
=
0
;
scRule
<
chainSubClassRuleCount
;
scRule
+=
1
)
{
for
(
le_uint16
scRule
=
0
;
scRule
<
chainSubClassRuleCount
;
scRule
+=
1
)
{
Offset
chainSubClassRuleTableOffset
=
Offset
chainSubClassRuleTableOffset
=
SWAPW
(
chainSubClassSetTable
->
chainSubClassRuleTableOffsetArray
[
scRule
]);
SWAPW
(
chainSubClassSetTable
->
chainSubClassRuleTableOffsetArray
[
scRule
]);
...
@@ -603,12 +641,14 @@ le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LETableRe
...
@@ -603,12 +641,14 @@ le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LETableRe
}
}
le_uint16
backtrkGlyphCount
=
SWAPW
(
backtrackGlyphCount
);
le_uint16
backtrkGlyphCount
=
SWAPW
(
backtrackGlyphCount
);
LEReferenceToArrayOf
<
Offset
>
backtrackGlyphArrayRef
(
base
,
success
,
backtrackCoverageTableOffsetArray
,
backtrkGlyphCount
);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
le_uint16
inputGlyphCount
=
(
le_uint16
)
SWAPW
(
backtrackCoverageTableOffsetArray
[
backtrkGlyphCount
]);
le_uint16
inputGlyphCount
=
(
le_uint16
)
SWAPW
(
backtrackCoverageTableOffsetArray
[
backtrkGlyphCount
]);
LEReferenceToArrayOf
<
Offset
>
inputCoverageTableOffsetArray
(
base
,
success
,
&
backtrackCoverageTableOffsetArray
[
backtrkGlyphCount
+
1
],
inputGlyphCount
+
2
);
// offset
LEReferenceToArrayOf
<
Offset
>
inputCoverageTableOffsetArray
(
base
,
success
,
&
backtrackCoverageTableOffsetArray
[
backtrkGlyphCount
+
1
],
inputGlyphCount
+
2
);
// offset
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
const
le_uint16
lookaheadGlyphCount
=
(
le_uint16
)
SWAPW
(
inputCoverageTableOffsetArray
[
inputGlyphCount
]);
const
le_uint16
lookaheadGlyphCount
=
(
le_uint16
)
SWAPW
(
inputCoverageTableOffsetArray
[
inputGlyphCount
]);
if
(
LE_FAILURE
(
success
))
{
return
0
;
}
LEReferenceToArrayOf
<
Offset
>
lookaheadCoverageTableOffsetArray
(
base
,
success
,
inputCoverageTableOffsetArray
.
getAlias
(
inputGlyphCount
+
1
,
success
),
lookaheadGlyphCount
+
2
);
LEReferenceToArrayOf
<
Offset
>
lookaheadCoverageTableOffsetArray
(
base
,
success
,
inputCoverageTableOffsetArray
.
getAlias
(
inputGlyphCount
+
1
,
success
),
lookaheadGlyphCount
+
2
);
if
(
LE_FAILURE
(
success
)
)
{
return
0
;
}
if
(
LE_FAILURE
(
success
)
)
{
return
0
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录