﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
5659	Selection plugin keeps crashing	Antti Leppä		"CKEditor keeps crashing in background with Firefox because selection plugin uses ""tryThese"" to check if browser supports ""createRange"" function. 

Crashing can be avoided by refactoring code to use typeof operator instead of tryThese. 

plugins/selection/plugin.js:743


{{{
var self = this;

var node = CKEDITOR.tools.tryThese(
// Is it native IE control type selection?
function()
{
	return self.getNative().createRange().item( 0 );
},
// Figure it out by checking if there's a single enclosed
// node of the range.
function()
{
	var range  = self.getRanges()[ 0 ];
	range.shrink( CKEDITOR.SHRINK_ELEMENT );
 
	var enclosed;
	if ( range.startContainer.equals( range.endContainer )
		&& ( range.endOffset - range.startOffset ) == 1
		&& styleObjectElements[ ( enclosed = range.startContainer.getChild( range.startOffset ) ).getName() ] )
	{
		return enclosed.$;
	}
});
}}}


Would be replaced with: 


{{{
var node = null; 	
// Is it native IE control type selection?
if (this.getNative() && (typeof this.getNative().createRange == ""function"")) {
  node = this.getNative().createRange().item( 0 );
} else {
  var range = this.getRanges()[ 0 ];
  range.shrink( CKEDITOR.SHRINK_ELEMENT );
  var enclosed;
  if ( range.startContainer.equals( range.endContainer ) 
    && ( range.endOffset - range.startOffset ) == 1 
    && styleObjectElements[ ( enclosed = range.startContainer.getChild( range.startOffset ) ).getName() ] ) 
  {
    node = enclosed.$;
  }
}
}}}


The bug was discovered with Firefox 3.5.9 (Firebug 1.5.4) / Linux 64bit "	Bug	closed	Low		General	3.2.1	worksforme		
