From 86914666e5341a09dfc9c1323c127058127053c2 Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Thu, 14 Dec 2017 09:43:44 -0800 Subject: [PATCH] metro-buck: check validity of segments Reviewed By: davidaurelio Differential Revision: D6496312 fbshipit-source-id: 586dc8d9f64d13cfddaf6bfe768e8f7b3442561a --- .../metro/src/Resolver/polyfills/require.js | 5 ++++ .../__snapshots__/basic_bundle-test.js.snap | 24 ++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/packages/metro/src/Resolver/polyfills/require.js b/packages/metro/src/Resolver/polyfills/require.js index c86897ca..88f4109b 100644 --- a/packages/metro/src/Resolver/polyfills/require.js +++ b/packages/metro/src/Resolver/polyfills/require.js @@ -160,6 +160,11 @@ function unpackModuleId( } require.unpackModuleId = unpackModuleId; +function packModuleId(value: {segmentId: number, localId: number}): ModuleID { + return value.segmentId << (ID_MASK_SHIFT + value.localId); +} +require.packModuleId = packModuleId; + function loadModuleImplementation(moduleId, module) { const nativeRequire = global.nativeRequire; if (!module && nativeRequire) { diff --git a/packages/metro/src/integration_tests/__tests__/__snapshots__/basic_bundle-test.js.snap b/packages/metro/src/integration_tests/__tests__/__snapshots__/basic_bundle-test.js.snap index 3371a6f0..36c76c9d 100644 --- a/packages/metro/src/integration_tests/__tests__/__snapshots__/basic_bundle-test.js.snap +++ b/packages/metro/src/integration_tests/__tests__/__snapshots__/basic_bundle-test.js.snap @@ -66,15 +66,21 @@ exports[`basic_bundle bundles package with polyfills 1`] = ` _require.unpackModuleId = unpackModuleId; + function packModuleId(value) { + return value.segmentId << ID_MASK_SHIFT + value.localId; + } + + _require.packModuleId = packModuleId; + function loadModuleImplementation(moduleId, module) { var nativeRequire = global.nativeRequire; if (!module && nativeRequire) { var _unpackModuleId = unpackModuleId(moduleId), - segmentId = _unpackModuleId.segmentId, - localId = _unpackModuleId.localId; + _segmentId = _unpackModuleId.segmentId, + _localId = _unpackModuleId.localId; - nativeRequire(localId, segmentId); + nativeRequire(_localId, _segmentId); module = modules[moduleId]; } @@ -251,15 +257,21 @@ exports[`basic_bundle bundles package without polyfills 1`] = ` _require.unpackModuleId = unpackModuleId; + function packModuleId(value) { + return value.segmentId << ID_MASK_SHIFT + value.localId; + } + + _require.packModuleId = packModuleId; + function loadModuleImplementation(moduleId, module) { var nativeRequire = global.nativeRequire; if (!module && nativeRequire) { var _unpackModuleId = unpackModuleId(moduleId), - segmentId = _unpackModuleId.segmentId, - localId = _unpackModuleId.localId; + _segmentId = _unpackModuleId.segmentId, + _localId = _unpackModuleId.localId; - nativeRequire(localId, segmentId); + nativeRequire(_localId, _segmentId); module = modules[moduleId]; }