From b12726648a35d2565f115aca539cc14b6497a7d2 Mon Sep 17 00:00:00 2001 From: "darin%meer.net" Date: Tue, 30 Nov 2004 00:28:48 +0000 Subject: [PATCH] fixes bug 271630 "XPCOM glue broken on Linux/PPC [monkeypox orange]" r=bsmedberg git-svn-id: svn://10.0.0.236/trunk@165919 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpcom/build/Makefile.in | 1 + mozilla/xpcom/{stub => build}/nsStringAPI.cpp | 0 mozilla/xpcom/string/public/nsStringAPI.h | 24 +- mozilla/xpcom/stub/Makefile.in | 2 +- mozilla/xpcom/stub/nsXPComStub.cpp | 210 +++++++++++++++--- 5 files changed, 199 insertions(+), 38 deletions(-) rename mozilla/xpcom/{stub => build}/nsStringAPI.cpp (100%) diff --git a/mozilla/xpcom/build/Makefile.in b/mozilla/xpcom/build/Makefile.in index 96a40d0d407..6627efec8c1 100644 --- a/mozilla/xpcom/build/Makefile.in +++ b/mozilla/xpcom/build/Makefile.in @@ -72,6 +72,7 @@ endif CPPSRCS = \ $(XPCOM_GLUE_SRC_LCSRCS) \ nsXPComInit.cpp \ + nsStringAPI.cpp \ $(NULL) ifeq ($(OS_ARCH),WINNT) diff --git a/mozilla/xpcom/stub/nsStringAPI.cpp b/mozilla/xpcom/build/nsStringAPI.cpp similarity index 100% rename from mozilla/xpcom/stub/nsStringAPI.cpp rename to mozilla/xpcom/build/nsStringAPI.cpp diff --git a/mozilla/xpcom/string/public/nsStringAPI.h b/mozilla/xpcom/string/public/nsStringAPI.h index 29d457f017f..0a279101ad3 100644 --- a/mozilla/xpcom/string/public/nsStringAPI.h +++ b/mozilla/xpcom/string/public/nsStringAPI.h @@ -46,10 +46,32 @@ * dependency on the implementation details of the abstract string types. */ +// Map frozen functions to private symbol names if not using strict API. +#ifndef MOZILLA_STRICT_API +# define NS_StringContainerInit NS_StringContainerInit_P +# define NS_StringContainerInit2 NS_StringContainerInit2_P +# define NS_StringContainerFinish NS_StringContainerFinish_P +# define NS_StringGetData NS_StringGetData_P +# define NS_StringCloneData NS_StringCloneData_P +# define NS_StringSetData NS_StringSetData_P +# define NS_StringSetDataRange NS_StringSetDataRange_P +# define NS_StringCopy NS_StringCopy_P +# define NS_CStringContainerInit NS_CStringContainerInit_P +# define NS_CStringContainerInit2 NS_CStringContainerInit2_P +# define NS_CStringContainerFinish NS_CStringContainerFinish_P +# define NS_CStringGetData NS_CStringGetData_P +# define NS_CStringCloneData NS_CStringCloneData_P +# define NS_CStringSetData NS_CStringSetData_P +# define NS_CStringSetDataRange NS_CStringSetDataRange_P +# define NS_CStringCopy NS_CStringCopy_P +# define NS_CStringToUTF16 NS_CStringToUTF16_P +# define NS_UTF16ToCString NS_UTF16ToCString_P +#endif + #include "nscore.h" #if defined( XPCOM_GLUE ) -#define NS_STRINGAPI(type) extern "C" type +#define NS_STRINGAPI(type) extern "C" NS_HIDDEN_(type) #elif defined( _IMPL_NS_STRINGAPI ) #define NS_STRINGAPI(type) extern "C" NS_EXPORT type #else diff --git a/mozilla/xpcom/stub/Makefile.in b/mozilla/xpcom/stub/Makefile.in index 98abb0471bc..0b6aa0e8ab4 100644 --- a/mozilla/xpcom/stub/Makefile.in +++ b/mozilla/xpcom/stub/Makefile.in @@ -62,7 +62,7 @@ REQUIRES = string \ DEFINES = -D_IMPL_NS_STRINGAPI LOCAL_INCLUDES = -I$(srcdir)/../build -CPPSRCS = nsXPComStub.cpp nsStringAPI.cpp +CPPSRCS = nsXPComStub.cpp # If we have an import library, then copy that to the SDK. Otherwise, # copy the shared library. diff --git a/mozilla/xpcom/stub/nsXPComStub.cpp b/mozilla/xpcom/stub/nsXPComStub.cpp index 4e6057495cd..0d47b8f4df8 100644 --- a/mozilla/xpcom/stub/nsXPComStub.cpp +++ b/mozilla/xpcom/stub/nsXPComStub.cpp @@ -60,29 +60,29 @@ static const XPCOMFunctions kFrozenFunctions = { &NS_GetTraceRefcnt_P, // these functions were added post 1.6 - &NS_StringContainerInit, - &NS_StringContainerFinish, - &NS_StringGetData, - &NS_StringSetData, - &NS_StringSetDataRange, - &NS_StringCopy, - &NS_CStringContainerInit, - &NS_CStringContainerFinish, - &NS_CStringGetData, - &NS_CStringSetData, - &NS_CStringSetDataRange, - &NS_CStringCopy, - &NS_CStringToUTF16, - &NS_UTF16ToCString, - &NS_StringCloneData, - &NS_CStringCloneData, + &NS_StringContainerInit_P, + &NS_StringContainerFinish_P, + &NS_StringGetData_P, + &NS_StringSetData_P, + &NS_StringSetDataRange_P, + &NS_StringCopy_P, + &NS_CStringContainerInit_P, + &NS_CStringContainerFinish_P, + &NS_CStringGetData_P, + &NS_CStringSetData_P, + &NS_CStringSetDataRange_P, + &NS_CStringCopy_P, + &NS_CStringToUTF16_P, + &NS_UTF16ToCString_P, + &NS_StringCloneData_P, + &NS_CStringCloneData_P, // these functions were added post 1.7 (post Firefox 1.0) &NS_Alloc_P, &NS_Realloc_P, &NS_Free_P, - &NS_StringContainerInit2, - &NS_CStringContainerInit2 + &NS_StringContainerInit2_P, + &NS_CStringContainerInit2_P }; extern "C" NS_EXPORT nsresult @@ -185,24 +185,6 @@ NS_GetTraceRefcnt(nsITraceRefcnt **result) return NS_GetTraceRefcnt_P(result); } -/* - * Stubs for nsXPCOMPrivate.h - */ - -#undef NS_RegisterXPCOMExitRoutine -extern "C" NS_EXPORT nsresult -NS_RegisterXPCOMExitRoutine(XPCOMExitRoutine exitRoutine, PRUint32 priority) -{ - return NS_RegisterXPCOMExitRoutine_P(exitRoutine, priority); -} - -#undef NS_UnregisterXPCOMExitRoutine -extern "C" NS_EXPORT nsresult -NS_UnregisterXPCOMExitRoutine(XPCOMExitRoutine exitRoutine) -{ - return NS_UnregisterXPCOMExitRoutine_P(exitRoutine); -} - #undef NS_Alloc extern "C" NS_EXPORT void* NS_Alloc(PRSize size) @@ -223,3 +205,159 @@ NS_Free(void* ptr) { NS_Free_P(ptr); } + +/* + * Stubs for nsXPCOMPrivate.h + */ + +#undef NS_RegisterXPCOMExitRoutine +extern "C" NS_EXPORT nsresult +NS_RegisterXPCOMExitRoutine(XPCOMExitRoutine exitRoutine, PRUint32 priority) +{ + return NS_RegisterXPCOMExitRoutine_P(exitRoutine, priority); +} + +#undef NS_UnregisterXPCOMExitRoutine +extern "C" NS_EXPORT nsresult +NS_UnregisterXPCOMExitRoutine(XPCOMExitRoutine exitRoutine) +{ + return NS_UnregisterXPCOMExitRoutine_P(exitRoutine); +} + +/* + * Stubs for nsStringAPI.h + */ + +#undef NS_StringContainerInit +extern "C" NS_EXPORT nsresult +NS_StringContainerInit(nsStringContainer &aStr) +{ + return NS_StringContainerInit_P(aStr); +} + +#undef NS_StringContainerInit2 +extern "C" NS_EXPORT nsresult +NS_StringContainerInit2(nsStringContainer &aStr, + const PRUnichar *aData, + PRUint32 aDataLength, + PRUint32 aFlags) +{ + return NS_StringContainerInit2_P(aStr, aData, aDataLength, aFlags); +} + +#undef NS_StringContainerFinish +extern "C" NS_EXPORT void +NS_StringContainerFinish(nsStringContainer &aStr) +{ + NS_StringContainerFinish_P(aStr); +} + +#undef NS_StringGetData +extern "C" NS_EXPORT PRUint32 +NS_StringGetData(const nsAString &aStr, const PRUnichar **aBuf, PRBool *aTerm) +{ + return NS_StringGetData_P(aStr, aBuf, aTerm); +} + +#undef NS_StringCloneData +extern "C" NS_EXPORT PRUnichar * +NS_StringCloneData(const nsAString &aStr) +{ + return NS_StringCloneData_P(aStr); +} + +#undef NS_StringSetData +extern "C" NS_EXPORT nsresult +NS_StringSetData(nsAString &aStr, const PRUnichar *aBuf, PRUint32 aCount) +{ + return NS_StringSetData_P(aStr, aBuf, aCount); +} + +#undef NS_StringSetDataRange +extern "C" NS_EXPORT nsresult +NS_StringSetDataRange(nsAString &aStr, PRUint32 aCutStart, PRUint32 aCutLength, + const PRUnichar *aBuf, PRUint32 aCount) +{ + return NS_StringSetDataRange_P(aStr, aCutStart, aCutLength, aBuf, aCount); +} + +#undef NS_StringCopy +extern "C" NS_EXPORT nsresult +NS_StringCopy(nsAString &aDest, const nsAString &aSrc) +{ + return NS_StringCopy_P(aDest, aSrc); +} + +#undef NS_CStringContainerInit +extern "C" NS_EXPORT nsresult +NS_CStringContainerInit(nsCStringContainer &aStr) +{ + return NS_CStringContainerInit_P(aStr); +} + +#undef NS_CStringContainerInit2 +extern "C" NS_EXPORT nsresult +NS_CStringContainerInit2(nsCStringContainer &aStr, + const char *aData, + PRUint32 aDataLength, + PRUint32 aFlags) +{ + return NS_CStringContainerInit2_P(aStr, aData, aDataLength, aFlags); +} + +#undef NS_CStringContainerFinish +extern "C" NS_EXPORT void +NS_CStringContainerFinish(nsCStringContainer &aStr) +{ + NS_CStringContainerFinish_P(aStr); +} + +#undef NS_CStringGetData +extern "C" NS_EXPORT PRUint32 +NS_CStringGetData(const nsACString &aStr, const char **aBuf, PRBool *aTerm) +{ + return NS_CStringGetData_P(aStr, aBuf, aTerm); +} + +#undef NS_CStringCloneData +extern "C" NS_EXPORT char * +NS_CStringCloneData(const nsACString &aStr) +{ + return NS_CStringCloneData_P(aStr); +} + +#undef NS_CStringSetData +extern "C" NS_EXPORT nsresult +NS_CStringSetData(nsACString &aStr, const char *aBuf, PRUint32 aCount) +{ + return NS_CStringSetData_P(aStr, aBuf, aCount); +} + +#undef NS_CStringSetDataRange +extern "C" NS_EXPORT nsresult +NS_CStringSetDataRange(nsACString &aStr, PRUint32 aCutStart, PRUint32 aCutLength, + const char *aBuf, PRUint32 aCount) +{ + return NS_CStringSetDataRange_P(aStr, aCutStart, aCutLength, aBuf, aCount); +} + +#undef NS_CStringCopy +extern "C" NS_EXPORT nsresult +NS_CStringCopy(nsACString &aDest, const nsACString &aSrc) +{ + return NS_CStringCopy_P(aDest, aSrc); +} + +#undef NS_CStringToUTF16 +extern "C" NS_EXPORT nsresult +NS_CStringToUTF16(const nsACString &aSrc, nsCStringEncoding aSrcEncoding, nsAString &aDest) +{ + return NS_CStringToUTF16_P(aSrc, aSrcEncoding, aDest); +} + +#undef NS_UTF16ToCString +extern "C" NS_EXPORT nsresult +NS_UTF16ToCString(const nsAString &aSrc, nsCStringEncoding aDestEncoding, nsACString &aDest) +{ + return NS_UTF16ToCString_P(aSrc, aDestEncoding, aDest); +}