Merge pull request #6072 from electron/fix-crash-windows
Work around a compiler bug that crashes on Windows
This commit is contained in:
		
				commit
				
					
						9e947d3973
					
				
			
		
					 3 changed files with 13 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -266,13 +266,22 @@ WebContents::WebContents(v8::Isolate* isolate,
 | 
			
		|||
WebContents::WebContents(v8::Isolate* isolate,
 | 
			
		||||
                         const mate::Dictionary& options)
 | 
			
		||||
    : embedder_(nullptr),
 | 
			
		||||
      type_(BROWSER_WINDOW),
 | 
			
		||||
      request_id_(0),
 | 
			
		||||
      background_throttling_(true) {
 | 
			
		||||
  // Read options.
 | 
			
		||||
  options.Get("backgroundThrottling", &background_throttling_);
 | 
			
		||||
 | 
			
		||||
  type_ = BROWSER_WINDOW;
 | 
			
		||||
  options.Get("type", &type_);
 | 
			
		||||
  // FIXME(zcbenz): We should read "type" parameter for better design, but
 | 
			
		||||
  // on Windows we have encountered a compiler bug that if we read "type"
 | 
			
		||||
  // from |options| and then set |type_|, a memory corruption will happen
 | 
			
		||||
  // and Electron will soon crash.
 | 
			
		||||
  // Remvoe this after we upgraded to use VS 2015 Update 3.
 | 
			
		||||
  bool b = false;
 | 
			
		||||
  if (options.Get("isGuest", &b) && b)
 | 
			
		||||
    type_ = WEB_VIEW;
 | 
			
		||||
  else if (options.Get("isBackgroundPage", &b) && b)
 | 
			
		||||
    type_ = BACKGROUND_PAGE;
 | 
			
		||||
 | 
			
		||||
  // Obtain the session.
 | 
			
		||||
  std::string partition;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,7 +78,7 @@ const startBackgroundPages = function (manifest) {
 | 
			
		|||
  const html = new Buffer(`<html><body>${scripts}</body></html>`)
 | 
			
		||||
 | 
			
		||||
  const contents = webContents.create({
 | 
			
		||||
    type: 'backgroundPage',
 | 
			
		||||
    isBackgroundPage: true,
 | 
			
		||||
    commandLineSwitches: ['--background-page']
 | 
			
		||||
  })
 | 
			
		||||
  backgroundPages[manifest.extensionId] = { html: html, webContents: contents }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ const createGuest = function (embedder, params) {
 | 
			
		|||
 | 
			
		||||
  const id = getNextInstanceId(embedder)
 | 
			
		||||
  const guest = webContents.create({
 | 
			
		||||
    type: 'webview',
 | 
			
		||||
    isGuest: true,
 | 
			
		||||
    partition: params.partition,
 | 
			
		||||
    embedder: embedder
 | 
			
		||||
  })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue