From 7c2dec5bd30bf404e3ae6385f9b897df45c84dd6 Mon Sep 17 00:00:00 2001 From: Daniel Gasienica Date: Tue, 10 Jun 2014 13:04:32 -0700 Subject: [PATCH] Prevent null reference access when unsetting styles --- src/browser/ui/ReactDOMComponent.js | 2 +- src/browser/ui/__tests__/ReactDOMComponent-test.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/browser/ui/ReactDOMComponent.js b/src/browser/ui/ReactDOMComponent.js index e8ecbbf230..b9719b3686 100644 --- a/src/browser/ui/ReactDOMComponent.js +++ b/src/browser/ui/ReactDOMComponent.js @@ -307,7 +307,7 @@ ReactDOMComponent.Mixin = { // Unset styles on `lastProp` but not on `nextProp`. for (styleName in lastProp) { if (lastProp.hasOwnProperty(styleName) && - !nextProp.hasOwnProperty(styleName)) { + (!nextProp || !nextProp.hasOwnProperty(styleName))) { styleUpdates = styleUpdates || {}; styleUpdates[styleName] = ''; } diff --git a/src/browser/ui/__tests__/ReactDOMComponent-test.js b/src/browser/ui/__tests__/ReactDOMComponent-test.js index d4fb449923..72111cd5f6 100644 --- a/src/browser/ui/__tests__/ReactDOMComponent-test.js +++ b/src/browser/ui/__tests__/ReactDOMComponent-test.js @@ -97,6 +97,11 @@ describe('ReactDOMComponent', function() { expect(stubStyle.display).toEqual('block'); expect(stubStyle.fontFamily).toEqual('Helvetica'); expect(stubStyle.lineHeight).toEqual('0.5'); + + stub.receiveComponent({props: { style: undefined }}, transaction); + expect(stubStyle.display).toBe(''); + expect(stubStyle.fontFamily).toBe(''); + expect(stubStyle.lineHeight).toBe(''); }); it("should update styles if initially null", function() {