rem: try{ file = sfile.clone().QueryInterface(nsILocalFile); } catch(e) { dump("Couldn't clone\n"+e); return false; 
add: if (path[0] == '"' && filePickerMode == nsIFilePicker.modeOpenMultiple && strLength > 1) {    var curFileStart = 1;  while (1) { var nextQuote;   var quoteSearchStart = curFileStart + 1; do { nextQuote = path.indexOf('"', quoteSearchStart); quoteSearchStart = nextQuote + 1; } while (nextQuote != -1 && path[nextQuote - 1] == '\\');  if (nextQuote == -1) {    if (!processPathEntry(path.substring(curFileStart), fileArray)) return false; break; }  if (!processPathEntry(path.substring(curFileStart, nextQuote), fileArray)) return false;  curFileStart = path.indexOf('"', nextQuote + 1); if (curFileStart == -1) {    if (nextQuote < strLength - 1) if (!processPathEntry(path.substring(nextQuote + 1), fileArray)) return false; break; } ++curFileStart; } } else {  if (!processPathEntry(path, fileArray)) return false; 
context: function processPath(path){  var file;  if (path[0] == '~')     path  = homeDir.path + path.substring(1);  try{    file = sfile.clone().QueryInterface(nsILocalFile);  } catch(e) {    dump("Couldn't clone\n"+e);    return false;  }  if (path[0] == '/')   /* an absolute path was entered */    file.initWithPath(path);  else if ((path.indexOf("/../") > 0) ||           (path.substr(-3) == "/..") ||           (path.substr(0,3) == "../") ||           (path == "..")) {    /* appendRelativePath doesn't allow .. */    try{      file.initWithPath(file.path + "/" + path);    } catch (e) {      dump("Couldn't init path\n"+e);      return false;    }  }  else {    try {      file.appendRelativePath(path);    } catch (e) {      dump("Couldn't append path\n"+e);      return false;    }  }  return file;}
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/72d11531a98c05182f7e0b93e89c5871fb7db820/filepicker.js/clean/toolkit/components/filepicker/content/filepicker.js