rem: if ( qmark > kMailToLength ) addresses = url.substring( kMailToLength, qmark ); else addresses = url.substr( kMailToLength ); 
add: if ( qmark > 7 ) { addresses = url.substring( 7, qmark ); } else { addresses = url.substr( 7 ); }   try { var ownerDocument = new XPCNativeWrapper(this.target, "ownerDocument").ownerDocument; var characterSet = new XPCNativeWrapper(ownerDocument, "characterSet").characterSet; const textToSubURI = Components.classes["@mozilla.org/intl/texttosuburi;1"] .getService(Components.interfaces.nsITextToSubURI); addresses = textToSubURI.unEscapeURIForUI(characterSet, addresses); } catch(ex) {  } 
context:     copyEmail : function () {        // Copy the comma-separated list of email addresses only.        // There are other ways of embedding email addresses in a mailto:        // link, but such complex parsing is beyond us.        var url = this.linkURL();        var qmark = url.indexOf( "?" );        var addresses;                if ( qmark > kMailToLength )             addresses = url.substring( kMailToLength, qmark );        else             addresses = url.substr( kMailToLength );        var clipboard = this.getService( "@mozilla.org/widget/clipboardhelper;1",                                         Components.interfaces.nsIClipboardHelper );        clipboard.copyString(addresses);    },    
meta: 5872	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/5872/b39659f6903d58d2e87f798d2d25d748ce352e62/nsContextMenu.js/buggy/mail/base/content/nsContextMenu.js