This mean an invalid UTF8 string get pass to the
NS_ConvertUTF8toUCS2::NS_ConvertUTF8toUCS2
My first question is how can the caller ensure the passed in string is
UTF-8. Do we store all the string in address book as UTF-8? If so, then
we need to find out how come that string is not in UTF-8.
Chris Waterson wrote:
> I'm getting a boatload of assertions while filling in addresses in the
> autocomplete widget. The problem appears to be that we're pulling out a
> non-UTF8 string from Mork. Here's one of the strings that I'm seeing the
> error on:
>
> 064EC9B0 41 64 65 6C 65 27 73 20 Adele's
> 064EC9B8 50 61 72 65 6E 74 27 73 Parent's
> 064EC9C0 20 41 64 72 65 73 73 3A Adress:
> 064EC9C8 0D 0A 31 32 31 20 42 72 ..121 Br
> 064EC9D0 6F 6F 6B 73 69 64 65 20 ookside
> 064EC9D8 42 6C 76 64 2E 0D 0A FF Blvd...ÿ
> 064EC9E0 00 .
>
> Note the trailing 0xFF: this is what's causing the problem. I don't know
> how it got in there, but it (and a bajillion other entries like it) are
> giving me a ton of grief!
>
> chris
>
> NTDLL! 77f9f9df()
> nsDebug::Assertion(const char * 0x100d1c2c, const char * 0x100d03a8,
> const char * 0x100d1c00, int 0x0000070b) line 254 + 13 bytes
> nsDebug::Error(const char * 0x100d1c2c, const char * 0x100d1c00, int
> 0x0000070b) line 418 + 22 bytes
> NS_ConvertUTF8toUCS2::Init(const char * 0x064ec9b0, unsigned int
> 0x00000030) line 1803 + 20 bytes
> NS_ConvertUTF8toUCS2::NS_ConvertUTF8toUCS2(const char * 0x064ec9b0,
> unsigned int 0x00000030) line 640
> nsAddrDatabase::GetStringColumn(nsIMdbRow * 0x04f7cd58, unsigned int
> 0x000000a8, nsString & {"33483"}) line 2756
> nsAddrDatabase::GetCardFromDB(nsIAbCard * 0x04f521dc
> {"abcard://abook.mab/Card1"}, nsIMdbRow * 0x04f7cd58) line 3330 + 35
> bytes
> nsAddrDatabase::CreateCard(nsIMdbRow * 0x04f7cd58, unsigned int
> 0x00000000, nsIAbCard * * 0x04f7eaf4) line 3748
> nsAddrDatabase::CreateABCard(nsIMdbRow * 0x04f7cd58, nsIAbCard * *
> 0x04f7eaf4) line 3775
> nsAddrDBEnumerator::CurrentItem(nsAddrDBEnumerator * const 0x04f7eae0,
> nsISupports * * 0x0012e2e4) line 3537 + 52 bytes
> nsAbAutoCompleteSession::SearchCards(nsIAbDirectory * 0x04f6ba2c
> {"abdirectory://abook.mab"}, nsAbAutoCompleteSearchString * 0x0012e68c,
> nsIAutoCompleteResults * 0x04f6bda0) line 316 + 56 bytes
> nsAbAutoCompleteSession::SearchDirectory(nsString &
> {"abdirectory://abook.mab"}, nsAbAutoCompleteSearchString * 0x0012e68c,
> nsIAutoCompleteResults * 0x04f6bda0, int 0x00000001) line 402 + 28 bytes
> nsAbAutoCompleteSession::SearchDirectory(nsString & {"abdirectory://"},
> nsAbAutoCompleteSearchString * 0x0012e68c, nsIAutoCompleteResults *
> 0x04f6bda0, int 0x00000001) line 427 + 28 bytes
> nsAbAutoCompleteSession::OnStartLookup(nsAbAutoCompleteSession * const
> 0x0776fc20, const unsigned short * 0x04f6a500, nsIAutoCompleteResults *
> 0x00000000, nsIAutoCompleteListener * 0x04f6be80) line 535 + 30 bytes
> XPTC_InvokeByIndex(nsISupports * 0x0776fc20, unsigned int 0x00000003,
> unsigned int 0x00000003, nsXPTCVariant * 0x0012e84c) line 139
> nsXPCWrappedNativeClass::CallWrappedMethod(JSContext * 0x0777f7f0,
> nsXPCWrappedNative * 0x07ba8490, const XPCNativeMemberDescriptor *
> 0x0407be9c, nsXPCWrappedNativeClass::CallMode CALL_METHOD, unsigned int
> 0x00000003, long * 0x062530ec, long * 0x0012ea34) line 920 + 42 bytes
> WrappedNative_CallMethod(JSContext * 0x0777f7f0, JSObject * 0x00e88270,
> unsigned int 0x00000003, long * 0x062530ec, long * 0x0012ea34) line 250
> + 34 bytes
> js_Invoke(JSContext * 0x0777f7f0, unsigned int 0x00000003, unsigned int
> 0x00000000) line 777 + 23 bytes
> js_Interpret(JSContext * 0x0777f7f0, long * 0x0012f7e0) line 2670 + 15
> bytes
> js_Invoke(JSContext * 0x0777f7f0, unsigned int 0x00000003, unsigned int
> 0x00000002) line 794 + 13 bytes
> js_InternalInvoke(JSContext * 0x0777f7f0, JSObject * 0x00cf3db0, long
> 0x00e2bc40, unsigned int 0x00000000, unsigned int 0x00000003, long *
> 0x04f6a660, long * 0x0012f908) line 866 + 20 bytes
> JS_CallFunctionValue(JSContext * 0x0777f7f0, JSObject * 0x00cf3db0, long
> 0x00e2bc40, unsigned int 0x00000003, long * 0x04f6a660, long *
> 0x0012f908) line 3271 + 31 bytes
> nsJSContext::CallEventHandler(nsJSContext * const 0x07794760, void *
> 0x00cf3db0, void * 0x00e2bc40, unsigned int 0x00000003, void *
> 0x04f6a660, int * 0x0012f9a0, int 0x00000000) line 934 + 33 bytes
> GlobalWindowImpl::RunTimeout(nsTimeoutImpl * 0x04f6a6a0) line 3886 + 84
> bytes
> nsGlobalWindow_RunTimeout(nsITimer * 0x04f6a540, void * 0x04f6a6a0) line
> 4149 + 15 bytes
> nsTimer::Fire() line 194 + 17 bytes
> FireTimeout(HWND__ * 0x00000000, unsigned int 0x00000113, unsigned int
> 0x00007661, unsigned long 0x029cf1ea) line 78
> USER32! 77e13eb0()
> USER32! 77e14092()
> USER32! 77e192da()
> nsAppShellService::Run(nsAppShellService * const 0x00597c60) line 408
> main1(int 0x00000001, char * * 0x004c4140, nsISupports * 0x00000000)
> line 978 + 32 bytes
> main(int 0x00000001, char * * 0x004c4140) line 1272 + 37 bytes
> mainCRTStartup() line 338 + 17 bytes
> KERNEL32! 77e87903()
>