2
0
Эх сурвалжийг харах

LoaderUtils: Catch URIError error in .decodeText()

Mugen87 6 жил өмнө
parent
commit
c0615ecec4

+ 11 - 2
src/loaders/LoaderUtils.js

@@ -24,8 +24,17 @@ var LoaderUtils = {
 
 		}
 
-		// Merges multi-byte utf-8 characters.
-		return decodeURIComponent( escape( s ) );
+		try {
+
+			// merges multi-byte utf-8 characters.
+
+			return decodeURIComponent( escape( s ) );
+
+		} catch ( e ) { // see #16358
+
+			return s;
+
+		}
 
 	},
 

+ 3 - 0
test/unit/src/loaders/LoaderUtils.tests.js

@@ -18,6 +18,9 @@ export default QUnit.module( 'Loaders', () => {
 			var multibyteArray = new Uint8Array( [ 230, 151, 165, 230, 156, 172, 229, 155, 189 ] );
 			assert.equal( '日本国', LoaderUtils.decodeText( multibyteArray ) );
 
+			var uriError = new Uint8Array( [ 219 ] );
+			assert.equal( 'Û', LoaderUtils.decodeText( uriError ) );
+
 		} );
 
 		QUnit.test( 'extractUrlBase', ( assert ) => {