From 1818bd14ddba55dcee92971a6b43720957264a53 Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Wed, 12 Jul 2006 23:51:01 +0000 Subject: [PATCH] Found one of the bugs: the default ArrayStreamer was being picked to stream TypedArrays. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4262 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../threerings/io/streamers/ArrayStreamer.as | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/as/com/threerings/io/streamers/ArrayStreamer.as b/src/as/com/threerings/io/streamers/ArrayStreamer.as index f7861dc01..f382a567a 100644 --- a/src/as/com/threerings/io/streamers/ArrayStreamer.as +++ b/src/as/com/threerings/io/streamers/ArrayStreamer.as @@ -43,26 +43,26 @@ public class ArrayStreamer extends Streamer override public function isStreamerFor (obj :Object) :Boolean { - if (_jname === "[Ljava.lang.Object;") { - // we fall back to streaming any array as Object - return (obj is Array); + if (obj is TypedArray) { + // TypedArrays need the same element type + return ((obj as TypedArray).getJavaType() === _jname); } else { - return (obj is TypedArray) && - ((obj as TypedArray).getJavaType() === _jname); + // any other array is streamed as Object[] + return (obj is Array) && (_jname === "[Ljava.lang.Object;"); } } override public function isStreamerForClass (clazz :Class) :Boolean { - if (_jname === "[Ljava.lang.Object;") { - return (clazz != TypedArray) && - ClassUtil.isAssignableAs(Array, clazz); - - } else { + if (clazz == TypedArray) { return false; // TODO: we're kinda fucked for finding a streamer // by class for TypedArrays here. The caller should be passing // the java name. + + } else { + return ClassUtil.isAssignableAs(Array, clazz) && + (_jname === "[Ljava.lang.Object;"); } }