Browse Source

Update weka.js

Lutz Roeder 4 years ago
parent
commit
467fded0b4
1 changed files with 11 additions and 5 deletions
  1. 11 5
      source/weka.js

+ 11 - 5
source/weka.js

@@ -10,10 +10,16 @@ weka.ModelFactory = class {
 
     match(context) {
         try {
-            const reader = new java.io.InputObjectStream(context.stream);
-            const obj = reader.read();
-            if (obj && obj.$class && obj.$class.name) {
-                return true;
+            const stream = context.stream;
+            if (stream.length >= 5) {
+                const signature = [ 0xac, 0xed ];
+                if (stream.peek(2).every((value, index) => value === signature[index])) {
+                    const reader = new java.io.InputObjectStream(stream);
+                    const obj = reader.read();
+                    if (obj && obj.$class && obj.$class.name) {
+                        return true;
+                    }
+                }
             }
         }
         catch (err) {
@@ -51,7 +57,7 @@ java.io.InputObjectStream = class {
         }
         const signature = [ 0xac, 0xed ];
         if (!stream.peek(2).every((value, index) => value === signature[index])) {
-            throw new java.io.Error('Invalid stream size');
+            throw new java.io.Error('Invalid stream signature');
         }
         this._reader = new java.io.InputObjectStream.BinaryReader(stream.peek());
         this._references = [];