Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
7ae3c9e2
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看板
“3bb48060d12876fa851c2624653010ad91ce1148”上不存在“...TestParallelMarkSweepAllocationPendingStackTrace.java”
提交
7ae3c9e2
编写于
7月 30, 2014
作者:
S
serb
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
7058697: Unexpected exceptions in MID parser code
Reviewed-by: prr, pchelko
上级
bb062d73
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
32 addition
and
18 deletion
+32
-18
src/share/classes/com/sun/media/sound/SoftMidiAudioFileReader.java
.../classes/com/sun/media/sound/SoftMidiAudioFileReader.java
+7
-3
src/share/classes/com/sun/media/sound/StandardMidiFileReader.java
...e/classes/com/sun/media/sound/StandardMidiFileReader.java
+25
-15
未找到文件。
src/share/classes/com/sun/media/sound/SoftMidiAudioFileReader.java
浏览文件 @
7ae3c9e2
/*
* Copyright (c) 2007, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2007, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -22,6 +22,7 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package
com.sun.media.sound
;
import
java.io.File
;
...
...
@@ -39,14 +40,14 @@ import javax.sound.midi.Receiver;
import
javax.sound.midi.Sequence
;
import
javax.sound.midi.Track
;
import
javax.sound.sampled.AudioFileFormat
;
import
javax.sound.sampled.AudioFileFormat.Type
;
import
javax.sound.sampled.AudioFormat
;
import
javax.sound.sampled.AudioInputStream
;
import
javax.sound.sampled.UnsupportedAudioFileException
;
import
javax.sound.sampled.AudioFileFormat.Type
;
import
javax.sound.sampled.spi.AudioFileReader
;
/**
* MIDI File Audio Renderer/Reader
* MIDI File Audio Renderer/Reader
.
*
* @author Karl Helgason
*/
...
...
@@ -109,6 +110,9 @@ public final class SoftMidiAudioFileReader extends AudioFileReader {
if
(
divtype
==
Sequence
.
PPQ
)
{
if
(((
MetaMessage
)
msg
).
getType
()
==
0x51
)
{
byte
[]
data
=
((
MetaMessage
)
msg
).
getData
();
if
(
data
.
length
<
3
)
{
throw
new
UnsupportedAudioFileException
();
}
mpq
=
((
data
[
0
]
&
0xff
)
<<
16
)
|
((
data
[
1
]
&
0xff
)
<<
8
)
|
(
data
[
2
]
&
0xff
);
}
...
...
src/share/classes/com/sun/media/sound/StandardMidiFileReader.java
浏览文件 @
7ae3c9e2
/*
* Copyright (c) 1999, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1999, 201
4
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -25,27 +25,25 @@
package
com.sun.media.sound
;
import
java.io.BufferedInputStream
;
import
java.io.DataInputStream
;
import
java.io.EOFException
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.InputStream
;
import
java.io.IOException
;
import
java.io.EOFException
;
import
java.io.BufferedInputStream
;
import
java.io.InputStream
;
import
java.net.URL
;
import
javax.sound.midi.MidiFileFormat
;
import
javax.sound.midi.InvalidMidiDataException
;
import
javax.sound.midi.MetaMessage
;
import
javax.sound.midi.MidiEvent
;
import
javax.sound.midi.MidiFileFormat
;
import
javax.sound.midi.MidiMessage
;
import
javax.sound.midi.Sequence
;
import
javax.sound.midi.SysexMessage
;
import
javax.sound.midi.Track
;
import
javax.sound.midi.spi.MidiFileReader
;
/**
* MIDI file reader.
*
...
...
@@ -53,19 +51,23 @@ import javax.sound.midi.spi.MidiFileReader;
* @author Jan Borgersen
* @author Florian Bomers
*/
public
final
class
StandardMidiFileReader
extends
MidiFileReader
{
private
static
final
int
MThd_MAGIC
=
0x4d546864
;
// 'MThd'
private
static
final
int
bisBufferSize
=
1024
;
// buffer size in buffered input streams
public
MidiFileFormat
getMidiFileFormat
(
InputStream
stream
)
throws
InvalidMidiDataException
,
IOException
{
public
MidiFileFormat
getMidiFileFormat
(
InputStream
stream
)
throws
InvalidMidiDataException
,
IOException
{
return
getMidiFileFormatFromStream
(
stream
,
MidiFileFormat
.
UNKNOWN_LENGTH
,
null
);
}
// $$fb 2002-04-17: part of fix for 4635286: MidiSystem.getMidiFileFormat() returns format having invalid length
private
MidiFileFormat
getMidiFileFormatFromStream
(
InputStream
stream
,
int
fileLength
,
SMFParser
smfParser
)
throws
InvalidMidiDataException
,
IOException
{
// $$fb 2002-04-17: part of fix for 4635286: MidiSystem.getMidiFileFormat()
// returns format having invalid length
private
MidiFileFormat
getMidiFileFormatFromStream
(
InputStream
stream
,
int
fileLength
,
SMFParser
smfParser
)
throws
InvalidMidiDataException
,
IOException
{
int
maxReadLength
=
16
;
int
duration
=
MidiFileFormat
.
UNKNOWN_LENGTH
;
DataInputStream
dis
;
...
...
@@ -230,7 +232,7 @@ public final class StandardMidiFileReader extends MidiFileReader {
//=============================================================================================================
/**
* State variables during parsing of a MIDI file
* State variables during parsing of a MIDI file
.
*/
final
class
SMFParser
{
private
static
final
int
MTrk_MAGIC
=
0x4d54726b
;
// 'MTrk'
...
...
@@ -297,7 +299,11 @@ final class SMFParser {
}
}
// now read track in a byte array
trackData
=
new
byte
[
trackLength
];
try
{
trackData
=
new
byte
[
trackLength
];
}
catch
(
final
OutOfMemoryError
oom
)
{
throw
new
IOException
(
"Track length too big"
,
oom
);
}
try
{
// $$fb 2003-08-20: fix for 4910986: MIDI file parser breaks up on http connection
stream
.
readFully
(
trackData
);
...
...
@@ -386,8 +392,13 @@ final class SMFParser {
// meta
int
metaType
=
readUnsigned
();
int
metaLength
=
(
int
)
readVarInt
();
final
byte
[]
metaData
;
try
{
metaData
=
new
byte
[
metaLength
];
}
catch
(
final
OutOfMemoryError
oom
)
{
throw
new
IOException
(
"Meta length too big"
,
oom
);
}
byte
[]
metaData
=
new
byte
[
metaLength
];
read
(
metaData
);
MetaMessage
metaMessage
=
new
MetaMessage
();
...
...
@@ -413,5 +424,4 @@ final class SMFParser {
throw
new
EOFException
(
"invalid MIDI file"
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录