From 4dc1ea1e569dc8b6259fa3b33a629c4926498bd7 Mon Sep 17 00:00:00 2001 From: CodeCodon Date: Wed, 5 Aug 2015 17:17:11 -0500 Subject: [PATCH] fix a few memory leaks and cppcheck detected errors - more in bugreport --- .../clientGame/src/shared/core/Game.cpp | 2 + .../serverScript/src/shared/JNIWrappers.cpp | 1415 +++++++++-------- .../sharedFile/src/shared/FileManifest.cpp | 5 +- .../sharedImage/src/shared/TargaFormat.cpp | 1 + .../sharedMath/src/shared/PaletteArgb.cpp | 1 + .../sharedMath/src/shared/PolySolver.cpp | 196 +-- .../src/shared/core/File.cpp | 7 +- .../library/platform/utils/Base/Config.cpp | 1 + .../3rd/library/soePlatform/Base/Config.cpp | 1 + .../CSAssist/utils/Base/Config.cpp | 1 + .../ChatAPI2/ChatAPI/utils/Base/Config.cpp | 1 + .../src/win32/SwgClientSetup.cpp | 1 + .../parser/SwgCuiCommandParserScene.cpp | 1 + .../SwgGameServer/src/win32/WinMain.cpp | 2 + 14 files changed, 851 insertions(+), 784 deletions(-) diff --git a/src/engine/client/library/clientGame/src/shared/core/Game.cpp b/src/engine/client/library/clientGame/src/shared/core/Game.cpp index 5af618f54..beec69d2e 100644 --- a/src/engine/client/library/clientGame/src/shared/core/Game.cpp +++ b/src/engine/client/library/clientGame/src/shared/core/Game.cpp @@ -2114,6 +2114,8 @@ void verifyUpdateRanges (const char* const filename) delete appearance; objectTemplate->releaseReference (); } + + fclose(infile); } #include diff --git a/src/engine/server/library/serverScript/src/shared/JNIWrappers.cpp b/src/engine/server/library/serverScript/src/shared/JNIWrappers.cpp index a6b557722..6bf997cd7 100644 --- a/src/engine/server/library/serverScript/src/shared/JNIWrappers.cpp +++ b/src/engine/server/library/serverScript/src/shared/JNIWrappers.cpp @@ -35,760 +35,811 @@ const JavaDictionaryPtr JavaDictionary::cms_nullPtr(new JavaDictionary namespace JNIWrappersNamespace { -jboolean isInstanceOf(const LocalRefParam & object, jclass clazz) -{ - if (object.getValue() != 0) - return JavaLibrary::getEnv()->IsInstanceOf(object.getValue(), clazz); - return JNI_FALSE; -} - -//----------------------------------------------------------------------- - -jsize getArrayLength(const LocalArrayRefParam & array) -{ - if (array.getValue() != 0) - return JavaLibrary::getEnv()->GetArrayLength(array.getValue()); - return 0; -} - -//----------------------------------------------------------------------- - -jsize getStringLength(const JavaStringParam & string) -{ - if (string.getValue() != 0) - return JavaLibrary::getEnv()->GetStringLength(string.getValue()); - return 0; -} - -//----------------------------------------------------------------------- - -LocalRefPtr allocObject(jclass clazz) -{ - LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->AllocObject(clazz))); - if (result->getValue() == 0) - return LocalRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -LocalRefPtr createNewObject(jclass clazz, jmethodID constructorID, ...) -{ - va_list marker; - va_start(marker, constructorID); - - LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->NewObjectV(clazz, constructorID, marker))); - if (result->getValue() == 0) - return LocalRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -JavaStringPtr createNewString(const char * bytes) -{ - if (bytes != NULL) + jboolean isInstanceOf(const LocalRefParam & object, jclass clazz) { - JavaStringPtr result(new JavaString(JavaLibrary::getEnv()->NewStringUTF(bytes))); - if (result->getValue() != 0) - return result; + if (object.getValue() != 0) + return JavaLibrary::getEnv()->IsInstanceOf(object.getValue(), clazz); + return JNI_FALSE; } - return JavaString::cms_nullPtr; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -JavaStringPtr createNewString(const jchar * unicodeChars, jsize len) -{ - if (unicodeChars != NULL && len >= 0) + jsize getArrayLength(const LocalArrayRefParam & array) { - JavaStringPtr result(new JavaString(JavaLibrary::getEnv()->NewString(unicodeChars, len))); - if (result->getValue() != 0) - return result; + if (array.getValue() != 0) + return JavaLibrary::getEnv()->GetArrayLength(array.getValue()); + return 0; } - return JavaString::cms_nullPtr; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -JavaDictionaryPtr createNewDictionary() -{ - JavaDictionaryPtr result(new JavaDictionary(JavaLibrary::getEnv()->NewObject(JavaLibrary::ms_clsDictionary, JavaLibrary::ms_midDictionary))); - if (result->getValue() != 0) + jsize getStringLength(const JavaStringParam & string) + { + if (string.getValue() != 0) + return JavaLibrary::getEnv()->GetStringLength(string.getValue()); + return 0; + } + + //----------------------------------------------------------------------- + + LocalRefPtr allocObject(jclass clazz) + { + LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->AllocObject(clazz))); + if (result->getValue() == 0) + return LocalRef::cms_nullPtr; return result; - return JavaDictionary::cms_nullPtr; -} + } -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -LocalObjectArrayRefPtr createNewObjectArray(jsize length, jclass clazz) -{ - LocalObjectArrayRefPtr result(new LocalObjectArrayRef(JavaLibrary::getEnv()->NewObjectArray(length, clazz, 0))); - if (result->getValue() == 0) - return LocalObjectArrayRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -LocalByteArrayRefPtr createNewByteArray(jsize length) -{ - LocalByteArrayRefPtr result(new LocalByteArrayRef(JavaLibrary::getEnv()->NewByteArray(length))); - if (result->getValue() == 0) - return LocalByteArrayRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -LocalIntArrayRefPtr createNewIntArray(jsize length) -{ - LocalIntArrayRefPtr result(new LocalIntArrayRef(JavaLibrary::getEnv()->NewIntArray(length))); - if (result->getValue() == 0) - return LocalIntArrayRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -LocalFloatArrayRefPtr createNewFloatArray(jsize length) -{ - LocalFloatArrayRefPtr result(new LocalFloatArrayRef(JavaLibrary::getEnv()->NewFloatArray(length))); - if (result->getValue() == 0) - return LocalFloatArrayRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -LocalBooleanArrayRefPtr createNewBooleanArray(jsize length) -{ - LocalBooleanArrayRefPtr result(new LocalBooleanArrayRef(JavaLibrary::getEnv()->NewBooleanArray(length))); - if (result->getValue() == 0) - return LocalBooleanArrayRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -LocalLongArrayRefPtr createNewLongArray(jsize length) -{ - LocalLongArrayRefPtr result(new LocalLongArrayRef(JavaLibrary::getEnv()->NewLongArray(length))); - if (result->getValue() == 0) - return LocalLongArrayRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -LocalRefPtr callObjectMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + LocalRefPtr createNewObject(jclass clazz, jmethodID constructorID, ...) { va_list marker; - va_start(marker, methodID); + va_start(marker, constructorID); - LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->CallObjectMethodV(object.getValue(), methodID, marker))); + LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->NewObjectV(clazz, constructorID, marker))); + + va_end(marker); + + if (result->getValue() == 0) + return LocalRef::cms_nullPtr; + return result; + } + + //----------------------------------------------------------------------- + + JavaStringPtr createNewString(const char * bytes) + { + if (bytes != NULL) + { + JavaStringPtr result(new JavaString(JavaLibrary::getEnv()->NewStringUTF(bytes))); + if (result->getValue() != 0) + return result; + } + return JavaString::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + JavaStringPtr createNewString(const jchar * unicodeChars, jsize len) + { + if (unicodeChars != NULL && len >= 0) + { + JavaStringPtr result(new JavaString(JavaLibrary::getEnv()->NewString(unicodeChars, len))); + if (result->getValue() != 0) + return result; + } + return JavaString::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + JavaDictionaryPtr createNewDictionary() + { + JavaDictionaryPtr result(new JavaDictionary(JavaLibrary::getEnv()->NewObject(JavaLibrary::ms_clsDictionary, JavaLibrary::ms_midDictionary))); if (result->getValue() != 0) return result; + return JavaDictionary::cms_nullPtr; } - return LocalRef::cms_nullPtr; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -LocalObjectArrayRefPtr callObjectArrayMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + LocalObjectArrayRefPtr createNewObjectArray(jsize length, jclass clazz) { - va_list marker; - va_start(marker, methodID); - - LocalObjectArrayRefPtr result(new LocalObjectArrayRef(static_cast(JavaLibrary::getEnv()->CallObjectMethodV(object.getValue(), methodID, marker)))); - if (result->getValue() != 0) - return result; + LocalObjectArrayRefPtr result(new LocalObjectArrayRef(JavaLibrary::getEnv()->NewObjectArray(length, clazz, 0))); + if (result->getValue() == 0) + return LocalObjectArrayRef::cms_nullPtr; + return result; } - return LocalObjectArrayRef::cms_nullPtr; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -LocalByteArrayRefPtr callByteArrayMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + LocalByteArrayRefPtr createNewByteArray(jsize length) { - va_list marker; - va_start(marker, methodID); - - LocalByteArrayRefPtr result(new LocalByteArrayRef(static_cast(JavaLibrary::getEnv()->CallObjectMethodV(object.getValue(), methodID, marker)))); - if (result->getValue() != 0) - return result; + LocalByteArrayRefPtr result(new LocalByteArrayRef(JavaLibrary::getEnv()->NewByteArray(length))); + if (result->getValue() == 0) + return LocalByteArrayRef::cms_nullPtr; + return result; } - return LocalByteArrayRef::cms_nullPtr; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -jint callIntMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + LocalIntArrayRefPtr createNewIntArray(jsize length) { - va_list marker; - va_start(marker, methodID); - - return JavaLibrary::getEnv()->CallIntMethodV(object.getValue(), methodID, marker); + LocalIntArrayRefPtr result(new LocalIntArrayRef(JavaLibrary::getEnv()->NewIntArray(length))); + if (result->getValue() == 0) + return LocalIntArrayRef::cms_nullPtr; + return result; } - return 0; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -jlong callLongMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + LocalFloatArrayRefPtr createNewFloatArray(jsize length) { - va_list marker; - va_start(marker, methodID); - - return JavaLibrary::getEnv()->CallLongMethodV(object.getValue(), methodID, marker); + LocalFloatArrayRefPtr result(new LocalFloatArrayRef(JavaLibrary::getEnv()->NewFloatArray(length))); + if (result->getValue() == 0) + return LocalFloatArrayRef::cms_nullPtr; + return result; } - return 0; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -jfloat callFloatMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + LocalBooleanArrayRefPtr createNewBooleanArray(jsize length) { - va_list marker; - va_start(marker, methodID); - - return JavaLibrary::getEnv()->CallFloatMethodV(object.getValue(), methodID, marker); + LocalBooleanArrayRefPtr result(new LocalBooleanArrayRef(JavaLibrary::getEnv()->NewBooleanArray(length))); + if (result->getValue() == 0) + return LocalBooleanArrayRef::cms_nullPtr; + return result; } - return 0; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -jboolean callBooleanMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + LocalLongArrayRefPtr createNewLongArray(jsize length) { - va_list marker; - va_start(marker, methodID); - - return JavaLibrary::getEnv()->CallBooleanMethodV(object.getValue(), methodID, marker); + LocalLongArrayRefPtr result(new LocalLongArrayRef(JavaLibrary::getEnv()->NewLongArray(length))); + if (result->getValue() == 0) + return LocalLongArrayRef::cms_nullPtr; + return result; } - return JNI_FALSE; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -void callVoidMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + LocalRefPtr callObjectMethod(const LocalRefParam & object, jmethodID methodID, ...) { - va_list marker; - va_start(marker, methodID); + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); - JavaLibrary::getEnv()->CallVoidMethodV(object.getValue(), methodID, marker); - } -} + LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->CallObjectMethodV(object.getValue(), methodID, marker))); -//----------------------------------------------------------------------- + va_end(marker); -jboolean callNonvirtualBooleanMethod(const LocalRefParam & object, jclass clazz, jmethodID methodID, ...) -{ - if (object.getValue() != 0) - { - va_list marker; - va_start(marker, methodID); - - return JavaLibrary::getEnv()->CallNonvirtualBooleanMethodV(object.getValue(), clazz, methodID, marker); - } - return JNI_FALSE; -} - -//----------------------------------------------------------------------- - -void callStaticVoidMethod(jclass clazz, jmethodID methodID, ...) -{ - va_list marker; - va_start(marker, methodID); - - JavaLibrary::getEnv()->CallStaticVoidMethodV(clazz, methodID, marker); -} - -//----------------------------------------------------------------------- - -LocalRefPtr callStaticObjectMethod(jclass clazz, jmethodID methodID, ...) -{ - va_list marker; - va_start(marker, methodID); - - LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->CallStaticObjectMethodV(clazz, methodID, marker))); - if (result->getValue() == 0) + if (result->getValue() != 0) + return result; + } return LocalRef::cms_nullPtr; - return result; -} + } -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -LocalObjectArrayRefPtr callStaticObjectArrayMethod(jclass clazz, jmethodID methodID, ...) -{ - va_list marker; - va_start(marker, methodID); + LocalObjectArrayRefPtr callObjectArrayMethod(const LocalRefParam & object, jmethodID methodID, ...) + { + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); - LocalObjectArrayRefPtr result(new LocalObjectArrayRef(static_cast(JavaLibrary::getEnv()->CallStaticObjectMethodV(clazz, methodID, marker)))); - if (result->getValue() == 0) + LocalObjectArrayRefPtr result(new LocalObjectArrayRef(static_cast(JavaLibrary::getEnv()->CallObjectMethodV(object.getValue(), methodID, marker)))); + + va_end(marker); + + if (result->getValue() != 0) + return result; + } return LocalObjectArrayRef::cms_nullPtr; - return result; -} + } -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -LocalByteArrayRefPtr callStaticByteArrayMethod(jclass clazz, jmethodID methodID, ...) -{ - va_list marker; - va_start(marker, methodID); + LocalByteArrayRefPtr callByteArrayMethod(const LocalRefParam & object, jmethodID methodID, ...) + { + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); - LocalByteArrayRefPtr result(new LocalByteArrayRef(static_cast(JavaLibrary::getEnv()->CallStaticObjectMethodV(clazz, methodID, marker)))); - if (result->getValue() == 0) + LocalByteArrayRefPtr result(new LocalByteArrayRef(static_cast(JavaLibrary::getEnv()->CallObjectMethodV(object.getValue(), methodID, marker)))); + + va_end(marker); + + if (result->getValue() != 0) + return result; + } return LocalByteArrayRef::cms_nullPtr; - return result; -} - -//----------------------------------------------------------------------- - -LocalRefPtr getObjectArrayElement(const LocalObjectArrayRefParam & array, int index) -{ - if (array.getValue() != 0 && index >= 0) - { - LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), static_cast(index)))); - if (result->getValue() != 0) - return result; } - return LocalRef::cms_nullPtr; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -LocalRefPtr getObjectField(const LocalRefParam & object, jfieldID fieldID) -{ - if (object.getValue() != 0) + jint callIntMethod(const LocalRefParam & object, jmethodID methodID, ...) { - LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->GetObjectField(object.getValue(), fieldID))); - if (result->getValue() != 0) - return result; - } - return LocalRef::cms_nullPtr; -} -//----------------------------------------------------------------------- + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); -LocalObjectArrayRefPtr getArrayObjectField(const LocalRefParam & object, jfieldID fieldID) -{ - if (object.getValue() != 0) + jint result = JavaLibrary::getEnv()->CallIntMethodV(object.getValue(), methodID, marker); + + va_end(marker); + + return result; + } + return 0; + } + + //----------------------------------------------------------------------- + + jlong callLongMethod(const LocalRefParam & object, jmethodID methodID, ...) { - LocalObjectArrayRefPtr result(new LocalObjectArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectField(object.getValue(), fieldID)))); - if (result->getValue() != 0) + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); + + jlong result = JavaLibrary::getEnv()->CallLongMethodV(object.getValue(), methodID, marker); + + va_end(marker); + return result; + } + return 0; } - return LocalObjectArrayRef::cms_nullPtr; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -JavaStringPtr callStringMethod(const LocalRefParam & object, jmethodID methodID, ...) -{ - if (object.getValue() != 0) + jfloat callFloatMethod(const LocalRefParam & object, jmethodID methodID, ...) + { + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); + + jfloat result = JavaLibrary::getEnv()->CallFloatMethodV(object.getValue(), methodID, marker); + + va_end(marker); + + return result; + } + return 0; + } + + //----------------------------------------------------------------------- + + jboolean callBooleanMethod(const LocalRefParam & object, jmethodID methodID, ...) + { + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); + + jboolean result = JavaLibrary::getEnv()->CallBooleanMethodV(object.getValue(), methodID, marker); + + va_end(marker); + + return result; + } + return JNI_FALSE; + } + + //----------------------------------------------------------------------- + + void callVoidMethod(const LocalRefParam & object, jmethodID methodID, ...) + { + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); + + JavaLibrary::getEnv()->CallVoidMethodV(object.getValue(), methodID, marker); + + va_end(marker); + } + } + + //----------------------------------------------------------------------- + + jboolean callNonvirtualBooleanMethod(const LocalRefParam & object, jclass clazz, jmethodID methodID, ...) + { + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); + + jboolean result = JavaLibrary::getEnv()->CallNonvirtualBooleanMethodV(object.getValue(), clazz, methodID, marker); + + va_end(marker); + + return result; + } + return JNI_FALSE; + } + + //----------------------------------------------------------------------- + + void callStaticVoidMethod(jclass clazz, jmethodID methodID, ...) { va_list marker; va_start(marker, methodID); - jobject result = JavaLibrary::getEnv()->CallObjectMethodV(object.getValue(), methodID, marker); - if (result != 0) + JavaLibrary::getEnv()->CallStaticVoidMethodV(clazz, methodID, marker); + + va_end(marker); + } + + //----------------------------------------------------------------------- + + LocalRefPtr callStaticObjectMethod(jclass clazz, jmethodID methodID, ...) + { + va_list marker; + va_start(marker, methodID); + + LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->CallStaticObjectMethodV(clazz, methodID, marker))); + + va_end(marker); + + if (result->getValue() == 0) + return LocalRef::cms_nullPtr; + return result; + } + + //----------------------------------------------------------------------- + + LocalObjectArrayRefPtr callStaticObjectArrayMethod(jclass clazz, jmethodID methodID, ...) + { + va_list marker; + va_start(marker, methodID); + + LocalObjectArrayRefPtr result(new LocalObjectArrayRef(static_cast(JavaLibrary::getEnv()->CallStaticObjectMethodV(clazz, methodID, marker)))); + + va_end(marker); + + if (result->getValue() == 0) + return LocalObjectArrayRef::cms_nullPtr; + return result; + } + + //----------------------------------------------------------------------- + + LocalByteArrayRefPtr callStaticByteArrayMethod(jclass clazz, jmethodID methodID, ...) + { + va_list marker; + va_start(marker, methodID); + + LocalByteArrayRefPtr result(new LocalByteArrayRef(static_cast(JavaLibrary::getEnv()->CallStaticObjectMethodV(clazz, methodID, marker)))); + + va_end(marker); + + if (result->getValue() == 0) + return LocalByteArrayRef::cms_nullPtr; + return result; + } + + //----------------------------------------------------------------------- + + LocalRefPtr getObjectArrayElement(const LocalObjectArrayRefParam & array, int index) + { + if (array.getValue() != 0 && index >= 0) + { + LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), static_cast(index)))); + if (result->getValue() != 0) + return result; + } + return LocalRef::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + LocalRefPtr getObjectField(const LocalRefParam & object, jfieldID fieldID) + { + if (object.getValue() != 0) + { + LocalRefPtr result(new LocalRef(JavaLibrary::getEnv()->GetObjectField(object.getValue(), fieldID))); + if (result->getValue() != 0) + return result; + } + return LocalRef::cms_nullPtr; + } + //----------------------------------------------------------------------- + + LocalObjectArrayRefPtr getArrayObjectField(const LocalRefParam & object, jfieldID fieldID) + { + if (object.getValue() != 0) + { + LocalObjectArrayRefPtr result(new LocalObjectArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectField(object.getValue(), fieldID)))); + if (result->getValue() != 0) + return result; + } + return LocalObjectArrayRef::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + JavaStringPtr callStringMethod(const LocalRefParam & object, jmethodID methodID, ...) + { + if (object.getValue() != 0) + { + va_list marker; + va_start(marker, methodID); + + jobject result = JavaLibrary::getEnv()->CallObjectMethodV(object.getValue(), methodID, marker); + + va_end(marker); + + if (result != 0) + { +#ifdef _DEBUG + if (!JavaLibrary::getEnv()->IsInstanceOf(result, JavaLibrary::ms_clsString)) + { + WARNING_STRICT_FATAL(true, ("JavaLibrary::callStringMethod called with non-string result")); + JavaLibrary::getEnv()->DeleteLocalRef(result); + return JavaString::cms_nullPtr; + } +#endif + return JavaStringPtr(new JavaString(static_cast(result))); + } + } + return JavaString::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + JavaStringPtr callStaticStringMethod(jclass clazz, jmethodID methodID, ...) + { + va_list marker; + va_start(marker, methodID); + + JavaStringPtr result(new JavaString(static_cast(JavaLibrary::getEnv()->CallStaticObjectMethodV(clazz, + methodID, marker)))); + + va_end(marker); + + if (result->getValue() != 0) + return result; + return JavaString::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + JavaStringPtr getStringArrayElement(const LocalObjectArrayRefParam & array, int index) + { + if (array.getValue() != 0 && index >= 0) + { + JavaStringPtr result(new JavaString(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), + static_cast(index))))); + if (result->getValue() != 0) + return result; + } + return JavaString::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + LocalArrayRefPtr getArrayArrayElement(const LocalObjectArrayRefParam & array, int index) + { + if (array.getValue() != 0 && index >= 0) + { + LocalArrayRefPtr result(new LocalArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), + static_cast(index))))); + if (result->getValue() != 0) + return result; + } + return LocalArrayRef::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + LocalObjectArrayRefPtr getObjectArrayArrayElement(const LocalObjectArrayRefParam & array, int index) + { + if (array.getValue() != 0 && index >= 0) + { + LocalObjectArrayRefPtr result(new LocalObjectArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), + static_cast(index))))); + if (result->getValue() != 0) + return result; + } + return LocalObjectArrayRef::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + LocalIntArrayRefPtr getIntArrayArrayElement(const LocalObjectArrayRefParam & array, int index) + { + if (array.getValue() != 0 && index >= 0) + { + LocalIntArrayRefPtr result(new LocalIntArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), + static_cast(index))))); + if (result->getValue() != 0) + return result; + } + return LocalIntArrayRef::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + LocalFloatArrayRefPtr getFloatArrayArrayElement(const LocalObjectArrayRefParam & array, int index) + { + if (array.getValue() != 0 && index >= 0) + { + LocalFloatArrayRefPtr result(new LocalFloatArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), + static_cast(index))))); + if (result->getValue() != 0) + return result; + } + return LocalFloatArrayRef::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + JavaStringPtr getStringField(const LocalRefParam & object, jfieldID fieldID) + { + if (object.getValue() != 0) + { + JavaStringPtr result(new JavaString(static_cast(JavaLibrary::getEnv()->GetObjectField(object.getValue(), fieldID)))); + if (result->getValue() != 0) + return result; + } + return JavaString::cms_nullPtr; + } + + //----------------------------------------------------------------------- + + void setObjectArrayElement(const LocalObjectArrayRefParam & array, jsize index, const LocalRefParam & value) + { + if (array.getValue() != 0 && index >= 0) { #ifdef _DEBUG - if (!JavaLibrary::getEnv()->IsInstanceOf(result, JavaLibrary::ms_clsString)) + if (index >= JavaLibrary::getEnv()->GetArrayLength(array.getValue())) { - WARNING_STRICT_FATAL(true, ("JavaLibrary::callStringMethod called with non-string result")); - JavaLibrary::getEnv()->DeleteLocalRef(result); - return JavaString::cms_nullPtr; + WARNING(true, ("JavaLibrary::setObjectArrayElement array index %d " + "out of bounds", static_cast(index))); + return; } #endif - return JavaStringPtr(new JavaString(static_cast(result))); + JavaLibrary::getEnv()->SetObjectArrayElement(array.getValue(), index, value.getValue()); } } - return JavaString::cms_nullPtr; -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -JavaStringPtr callStaticStringMethod(jclass clazz, jmethodID methodID, ...) -{ - va_list marker; - va_start(marker, methodID); - - JavaStringPtr result(new JavaString(static_cast(JavaLibrary::getEnv()->CallStaticObjectMethodV(clazz, - methodID, marker)))); - if (result->getValue() != 0) - return result; - return JavaString::cms_nullPtr; -} - -//----------------------------------------------------------------------- - -JavaStringPtr getStringArrayElement(const LocalObjectArrayRefParam & array, int index) -{ - if (array.getValue() != 0 && index >= 0) + void setObjectField(const LocalRefParam & object, jfieldID fieldID, const LocalRefParam & value) { - JavaStringPtr result(new JavaString(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), - static_cast(index))))); - if (result->getValue() != 0) - return result; - } - return JavaString::cms_nullPtr; -} - -//----------------------------------------------------------------------- - -LocalArrayRefPtr getArrayArrayElement(const LocalObjectArrayRefParam & array, int index) -{ - if (array.getValue() != 0 && index >= 0) - { - LocalArrayRefPtr result(new LocalArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), - static_cast(index))))); - if (result->getValue() != 0) - return result; - } - return LocalArrayRef::cms_nullPtr; -} - -//----------------------------------------------------------------------- - -LocalObjectArrayRefPtr getObjectArrayArrayElement(const LocalObjectArrayRefParam & array, int index) -{ - if (array.getValue() != 0 && index >= 0) - { - LocalObjectArrayRefPtr result(new LocalObjectArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), - static_cast(index))))); - if (result->getValue() != 0) - return result; - } - return LocalObjectArrayRef::cms_nullPtr; -} - -//----------------------------------------------------------------------- - -LocalIntArrayRefPtr getIntArrayArrayElement(const LocalObjectArrayRefParam & array, int index) -{ - if (array.getValue() != 0 && index >= 0) - { - LocalIntArrayRefPtr result(new LocalIntArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), - static_cast(index))))); - if (result->getValue() != 0) - return result; - } - return LocalIntArrayRef::cms_nullPtr; -} - -//----------------------------------------------------------------------- - -LocalFloatArrayRefPtr getFloatArrayArrayElement(const LocalObjectArrayRefParam & array, int index) -{ - if (array.getValue() != 0 && index >= 0) - { - LocalFloatArrayRefPtr result(new LocalFloatArrayRef(static_cast(JavaLibrary::getEnv()->GetObjectArrayElement(array.getValue(), - static_cast(index))))); - if (result->getValue() != 0) - return result; - } - return LocalFloatArrayRef::cms_nullPtr; -} - -//----------------------------------------------------------------------- - -JavaStringPtr getStringField(const LocalRefParam & object, jfieldID fieldID) -{ - if (object.getValue() != 0) - { - JavaStringPtr result(new JavaString(static_cast(JavaLibrary::getEnv()->GetObjectField(object.getValue(), fieldID)))); - if (result->getValue() != 0) - return result; - } - return JavaString::cms_nullPtr; -} - -//----------------------------------------------------------------------- - -void setObjectArrayElement(const LocalObjectArrayRefParam & array, jsize index, const LocalRefParam & value) -{ - if (array.getValue() != 0 && index >= 0) - { -#ifdef _DEBUG - if (index >= JavaLibrary::getEnv()->GetArrayLength(array.getValue())) + if (object.getValue() != 0) { - WARNING(true, ("JavaLibrary::setObjectArrayElement array index %d " - "out of bounds", static_cast(index))); - return; + JavaLibrary::getEnv()->SetObjectField(object.getValue(), fieldID, value.getValue()); } -#endif - JavaLibrary::getEnv()->SetObjectArrayElement(array.getValue(), index, value.getValue()); } -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -void setObjectField(const LocalRefParam & object, jfieldID fieldID, const LocalRefParam & value) -{ - if (object.getValue() != 0) + jint getIntField(const LocalRefParam & object, jfieldID fieldID) { - JavaLibrary::getEnv()->SetObjectField(object.getValue(), fieldID, value.getValue()); - } -} - -//----------------------------------------------------------------------- - -jint getIntField(const LocalRefParam & object, jfieldID fieldID) -{ - if (object.getValue() != 0) - { - return JavaLibrary::getEnv()->GetIntField(object.getValue(), fieldID); - } - return 0; -} - -//----------------------------------------------------------------------- - -jfloat getFloatField(const LocalRefParam & object, jfieldID fieldID) -{ - if (object.getValue() != 0) - { - return JavaLibrary::getEnv()->GetFloatField(object.getValue(), fieldID); - } - return 0; -} - -//----------------------------------------------------------------------- - -jboolean getBooleanField(const LocalRefParam & object, jfieldID fieldID) -{ - if (object.getValue() != 0) - { - return JavaLibrary::getEnv()->GetBooleanField(object.getValue(), fieldID); - } - return false; -} - -//----------------------------------------------------------------------- - -void setIntField(const LocalRefParam & object, jfieldID fieldID, jint value) -{ - if (object.getValue() != 0) - { - JavaLibrary::getEnv()->SetIntField(object.getValue(), fieldID, value); - } -} - -//----------------------------------------------------------------------- - -void setFloatField(const LocalRefParam & object, jfieldID fieldID, jfloat value) -{ - if (object.getValue() != 0) - { - JavaLibrary::getEnv()->SetFloatField(object.getValue(), fieldID, value); - } -} - -//----------------------------------------------------------------------- - -void setBooleanField(const LocalRefParam & object, jfieldID fieldID, jboolean value) -{ - if (object.getValue() != 0) - { - JavaLibrary::getEnv()->SetBooleanField(object.getValue(), fieldID, value); - } -} - -//----------------------------------------------------------------------- - -void getByteArrayRegion(const LocalByteArrayRef & array, jsize start, jsize length, jbyte * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->GetByteArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void getIntArrayRegion(const LocalIntArrayRef & array, jsize start, jsize length, jint * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->GetIntArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void getFloatArrayRegion(const LocalFloatArrayRef & array, jsize start, jsize length, jfloat * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->GetFloatArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void getBooleanArrayRegion(const LocalBooleanArrayRef & array, jsize start, jsize length, jboolean * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->GetBooleanArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void getLongArrayRegion(const LocalLongArrayRef & array, jsize start, jsize length, jlong * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->GetLongArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void setByteArrayRegion(const LocalByteArrayRef & array, jsize start, jsize length, jbyte * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->SetByteArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void setIntArrayRegion(const LocalIntArrayRef & array, jsize start, jsize length, jint * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->SetIntArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void setFloatArrayRegion(const LocalFloatArrayRef & array, jsize start, jsize length, jfloat * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->SetFloatArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void setBooleanArrayRegion(const LocalBooleanArrayRef & array, jsize start, jsize length, jboolean * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->SetBooleanArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -void setLongArrayRegion(const LocalLongArrayRef & array, jsize start, jsize length, jlong * buf) -{ - if (array.getValue() != 0) - { - JavaLibrary::getEnv()->SetLongArrayRegion(array.getValue(), start, length, buf); - } -} - -//----------------------------------------------------------------------- - -/** - * Converts a Java array of strings to a vector of const char *. NOTE: The caller is - * responsible for freeing the returned strings. - */ -void getStringArray(const LocalObjectArrayRefParam & array, std::vector & strings) -{ - jsize count = getArrayLength(array); - strings.resize(count, 0); - - jstring stringElement; - jsize stringLength; - jsize bufferLength; - char * newString; - - JNIEnv * env = JavaLibrary::getEnv(); - jobjectArray arrayRef = array.getValue(); - std::vector::iterator stringsIter = strings.begin(); - for (jsize i = 0; i < count; ++i, ++stringsIter) - { - if (*stringsIter != 0) - delete[] const_cast(*stringsIter); - - newString = 0; - stringElement = static_cast(env->GetObjectArrayElement(arrayRef, i)); - if (stringElement != 0) + if (object.getValue() != 0) { - stringLength = env->GetStringLength(stringElement); - bufferLength = env->GetStringUTFLength(stringElement); - newString = new char[bufferLength+1]; - newString[bufferLength] = 0; - env->GetStringUTFRegion(stringElement, 0, stringLength, newString); - env->DeleteLocalRef(stringElement); + return JavaLibrary::getEnv()->GetIntField(object.getValue(), fieldID); } - *stringsIter = newString; + return 0; } -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- -/** - * Converts a Java array of strings to a vector of const Unicode::String *. NOTE: - * The caller is responsible for freeing the returned strings. - */ -void getStringArray(const LocalObjectArrayRefParam & array, std::vector & strings) -{ - jsize count = getArrayLength(array); - strings.resize(count, 0); - - jsize stringLength; - jstring stringElement; - const jchar * newString; - - JNIEnv * env = JavaLibrary::getEnv(); - jobjectArray arrayRef = array.getValue(); - std::vector::iterator stringsIter = strings.begin(); - for (jsize i = 0; i < count; ++i, ++stringsIter) + jfloat getFloatField(const LocalRefParam & object, jfieldID fieldID) { - if (*stringsIter != 0) - delete *stringsIter; - - stringElement = static_cast(env->GetObjectArrayElement(arrayRef, i)); - if (stringElement != 0) + if (object.getValue() != 0) { - stringLength = env->GetStringLength(stringElement); - newString = env->GetStringCritical(stringElement, 0); - *stringsIter = new Unicode::String(newString, stringLength); - env->ReleaseStringCritical(stringElement, newString); - env->DeleteLocalRef(stringElement); + return JavaLibrary::getEnv()->GetFloatField(object.getValue(), fieldID); + } + return 0; + } + + //----------------------------------------------------------------------- + + jboolean getBooleanField(const LocalRefParam & object, jfieldID fieldID) + { + if (object.getValue() != 0) + { + return JavaLibrary::getEnv()->GetBooleanField(object.getValue(), fieldID); + } + return false; + } + + //----------------------------------------------------------------------- + + void setIntField(const LocalRefParam & object, jfieldID fieldID, jint value) + { + if (object.getValue() != 0) + { + JavaLibrary::getEnv()->SetIntField(object.getValue(), fieldID, value); + } + } + + //----------------------------------------------------------------------- + + void setFloatField(const LocalRefParam & object, jfieldID fieldID, jfloat value) + { + if (object.getValue() != 0) + { + JavaLibrary::getEnv()->SetFloatField(object.getValue(), fieldID, value); + } + } + + //----------------------------------------------------------------------- + + void setBooleanField(const LocalRefParam & object, jfieldID fieldID, jboolean value) + { + if (object.getValue() != 0) + { + JavaLibrary::getEnv()->SetBooleanField(object.getValue(), fieldID, value); + } + } + + //----------------------------------------------------------------------- + + void getByteArrayRegion(const LocalByteArrayRef & array, jsize start, jsize length, jbyte * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->GetByteArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void getIntArrayRegion(const LocalIntArrayRef & array, jsize start, jsize length, jint * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->GetIntArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void getFloatArrayRegion(const LocalFloatArrayRef & array, jsize start, jsize length, jfloat * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->GetFloatArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void getBooleanArrayRegion(const LocalBooleanArrayRef & array, jsize start, jsize length, jboolean * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->GetBooleanArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void getLongArrayRegion(const LocalLongArrayRef & array, jsize start, jsize length, jlong * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->GetLongArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void setByteArrayRegion(const LocalByteArrayRef & array, jsize start, jsize length, jbyte * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->SetByteArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void setIntArrayRegion(const LocalIntArrayRef & array, jsize start, jsize length, jint * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->SetIntArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void setFloatArrayRegion(const LocalFloatArrayRef & array, jsize start, jsize length, jfloat * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->SetFloatArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void setBooleanArrayRegion(const LocalBooleanArrayRef & array, jsize start, jsize length, jboolean * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->SetBooleanArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + void setLongArrayRegion(const LocalLongArrayRef & array, jsize start, jsize length, jlong * buf) + { + if (array.getValue() != 0) + { + JavaLibrary::getEnv()->SetLongArrayRegion(array.getValue(), start, length, buf); + } + } + + //----------------------------------------------------------------------- + + /** + * Converts a Java array of strings to a vector of const char *. NOTE: The caller is + * responsible for freeing the returned strings. + */ + void getStringArray(const LocalObjectArrayRefParam & array, std::vector & strings) + { + jsize count = getArrayLength(array); + strings.resize(count, 0); + + jstring stringElement; + jsize stringLength; + jsize bufferLength; + char * newString; + + JNIEnv * env = JavaLibrary::getEnv(); + jobjectArray arrayRef = array.getValue(); + std::vector::iterator stringsIter = strings.begin(); + for (jsize i = 0; i < count; ++i, ++stringsIter) + { + if (*stringsIter != 0) + delete[] const_cast(*stringsIter); + + newString = 0; + stringElement = static_cast(env->GetObjectArrayElement(arrayRef, i)); + if (stringElement != 0) + { + stringLength = env->GetStringLength(stringElement); + bufferLength = env->GetStringUTFLength(stringElement); + newString = new char[bufferLength + 1]; + newString[bufferLength] = 0; + env->GetStringUTFRegion(stringElement, 0, stringLength, newString); + env->DeleteLocalRef(stringElement); + } + *stringsIter = newString; + } + } + + //----------------------------------------------------------------------- + + /** + * Converts a Java array of strings to a vector of const Unicode::String *. NOTE: + * The caller is responsible for freeing the returned strings. + */ + void getStringArray(const LocalObjectArrayRefParam & array, std::vector & strings) + { + jsize count = getArrayLength(array); + strings.resize(count, 0); + + jsize stringLength; + jstring stringElement; + const jchar * newString; + + JNIEnv * env = JavaLibrary::getEnv(); + jobjectArray arrayRef = array.getValue(); + std::vector::iterator stringsIter = strings.begin(); + for (jsize i = 0; i < count; ++i, ++stringsIter) + { + if (*stringsIter != 0) + delete *stringsIter; + + stringElement = static_cast(env->GetObjectArrayElement(arrayRef, i)); + if (stringElement != 0) + { + stringLength = env->GetStringLength(stringElement); + newString = env->GetStringCritical(stringElement, 0); + *stringsIter = new Unicode::String(newString, stringLength); + env->ReleaseStringCritical(stringElement, newString); + env->DeleteLocalRef(stringElement); + } + else + *stringsIter = 0; } - else - *stringsIter = 0; } -} -//----------------------------------------------------------------------- + //----------------------------------------------------------------------- } // namespace JNIWrappersNamespace @@ -796,7 +847,7 @@ void getStringArray(const LocalObjectArrayRefParam & array, std::vector(0)) +LocalRefParam(static_cast(0)) { if (src.getValue() != 0 && JavaLibrary::getEnv() != NULL) m_ref = JavaLibrary::getEnv()->NewGlobalRef(src.getValue()); @@ -969,7 +1020,7 @@ GlobalRef::~GlobalRef() //======================================================================== GlobalArrayRef::GlobalArrayRef(const LocalObjectArrayRefParam & src) : - LocalObjectArrayRefParam(static_cast(0)) +LocalObjectArrayRefParam(static_cast(0)) { if (src.getValue() != 0 && JavaLibrary::getEnv() != NULL) m_ref = JavaLibrary::getEnv()->NewGlobalRef(src.getValue()); @@ -985,12 +1036,12 @@ GlobalArrayRef::~GlobalArrayRef() //======================================================================== JavaStringParam::JavaStringParam(jstring src) : - LocalRefParam(src) +LocalRefParam(src) { } JavaStringParam::JavaStringParam(const LocalRefParam & src) : - LocalRefParam(src.getValue()) +LocalRefParam(src.getValue()) { } @@ -1024,22 +1075,22 @@ int JavaStringParam::fillBuffer(char * buffer, int size) const //======================================================================== JavaString::JavaString(jstring src) : - JavaStringParam(src) +JavaStringParam(src) { } JavaString::JavaString(const char * src) : - JavaStringParam(JavaLibrary::getEnv()->NewStringUTF(src != NULL ? src : "")) +JavaStringParam(JavaLibrary::getEnv()->NewStringUTF(src != NULL ? src : "")) { } JavaString::JavaString(const std::string & src) : - JavaStringParam(JavaLibrary::getEnv()->NewStringUTF(src.c_str())) +JavaStringParam(JavaLibrary::getEnv()->NewStringUTF(src.c_str())) { } JavaString::JavaString(const Unicode::String & src) : - JavaStringParam(JavaLibrary::getEnv()->NewString(src.data(), src.size())) +JavaStringParam(JavaLibrary::getEnv()->NewString(src.data(), src.size())) { } @@ -1054,7 +1105,7 @@ JavaString::~JavaString() //======================================================================== JavaDictionary::JavaDictionary(jobject src) : - LocalRef(src) +LocalRef(src) { } @@ -1063,8 +1114,8 @@ JavaDictionary::~JavaDictionary() } /** - * Converts the data in a JavaDictionary to a string. - */ +* Converts the data in a JavaDictionary to a string. +*/ void JavaDictionary::serialize(void) { JavaLibrary::convert(*this, m_serializedData); diff --git a/src/engine/shared/library/sharedFile/src/shared/FileManifest.cpp b/src/engine/shared/library/sharedFile/src/shared/FileManifest.cpp index 3a849751d..aae69331c 100644 --- a/src/engine/shared/library/sharedFile/src/shared/FileManifest.cpp +++ b/src/engine/shared/library/sharedFile/src/shared/FileManifest.cpp @@ -281,6 +281,7 @@ void FileManifest::addNewManifestEntry(const char *fileName, int fileSize) // delete the new entry we created delete entry; } + delete entry; #else return; #endif @@ -299,9 +300,7 @@ void FileManifest::addStoredManifestEntry(const char *fileName, const char * sce std::pair insertReturn = s_manifest.insert(std::pair(crc, entry)); - // if the insert failed, delete the entry we created - if (!insertReturn.second) - delete entry; + delete entry; } // ----------------------------------------------------------------------- diff --git a/src/engine/shared/library/sharedImage/src/shared/TargaFormat.cpp b/src/engine/shared/library/sharedImage/src/shared/TargaFormat.cpp index e85772d53..303f5f388 100644 --- a/src/engine/shared/library/sharedImage/src/shared/TargaFormat.cpp +++ b/src/engine/shared/library/sharedImage/src/shared/TargaFormat.cpp @@ -1198,6 +1198,7 @@ bool TargaFormat::saveImage(const Image &image, const char *filename) if (numWritten != 1) { DEBUG_WARNING(true, ("Targa header not written successfully.\n")); + fclose(f); return false; } //------------------------------------------ diff --git a/src/engine/shared/library/sharedMath/src/shared/PaletteArgb.cpp b/src/engine/shared/library/sharedMath/src/shared/PaletteArgb.cpp index 097826bee..ea3924555 100644 --- a/src/engine/shared/library/sharedMath/src/shared/PaletteArgb.cpp +++ b/src/engine/shared/library/sharedMath/src/shared/PaletteArgb.cpp @@ -264,6 +264,7 @@ bool PaletteArgb::write(const char *pathName) const if (unitsWritten != 1) { WARNING(true, ("failed to write palette data (%d bytes) to file [%s].", numberOfBytesWritten, pathName)); + fclose(file); return false; } diff --git a/src/engine/shared/library/sharedMath/src/shared/PolySolver.cpp b/src/engine/shared/library/sharedMath/src/shared/PolySolver.cpp index 065154522..264f46866 100644 --- a/src/engine/shared/library/sharedMath/src/shared/PolySolver.cpp +++ b/src/engine/shared/library/sharedMath/src/shared/PolySolver.cpp @@ -9,90 +9,90 @@ #define M_PI 3.14159265358979323846 #endif -double cuberoot( double x ) +double cuberoot(double x) { - return ((x) > 0.0 ? pow(x, 1.0/3.0) : ((x) < 0.0 ? -pow(-x, 1.0/3.0) : 0.0)); + return ((x) > 0.0 ? pow(x, 1.0 / 3.0) : ((x) < 0.0 ? -pow(-x, 1.0 / 3.0) : 0.0)); } -int PolySolver::solveQuadratic( double const c[3], double s[2] ) +int PolySolver::solveQuadratic(double const c[3], double s[2]) { - double p, q, D; + double p, q, D; - /* normal form: x^2 + px + q = 0 */ + /* normal form: x^2 + px + q = 0 */ - p = c[ 1 ] / (2 * c[ 2 ]); - q = c[ 0 ] / c[ 2 ]; + p = c[1] / (2 * c[2]); + q = c[0] / c[2]; - D = p * p - q; + D = p * p - q; - if (D < 0) - { + if (D < 0) + { return 0; - } - else - { + } + else + { double sqrt_D = sqrt(D); - s[ 0 ] = sqrt_D - p; - s[ 1 ] = - sqrt_D - p; + s[0] = sqrt_D - p; + s[1] = -sqrt_D - p; return 2; - } + } } -int PolySolver::solveCubic( double const c[4], double s[3] ) +int PolySolver::solveCubic(double const c[4], double s[3]) { - int i, num; - double sub; - double A, B, C; - double sq_A, p, q; - double cb_p, D; + int i, num; + double sub; + double A, B, C; + double sq_A, p, q; + double cb_p, D; - /* normal form: x^3 + Ax^2 + Bx + C = 0 */ + /* normal form: x^3 + Ax^2 + Bx + C = 0 */ - A = c[ 2 ] / c[ 3 ]; - B = c[ 1 ] / c[ 3 ]; - C = c[ 0 ] / c[ 3 ]; + A = c[2] / c[3]; + B = c[1] / c[3]; + C = c[0] / c[3]; - /* substitute x = y - A/3 to eliminate quadric term: + /* substitute x = y - A/3 to eliminate quadric term: x^3 +px + q = 0 */ - sq_A = A * A; - p = (1.0/3) * (- (1.0/3) * sq_A + B); - q = (1.0/2) * (((2.0/27) * A * sq_A - ((1.0/3) * A * B)) + C); + sq_A = A * A; + p = (1.0 / 3) * (-(1.0 / 3) * sq_A + B); + q = (1.0 / 2) * (((2.0 / 27) * A * sq_A - ((1.0 / 3) * A * B)) + C); - /* use Cardano's formula */ + /* use Cardano's formula */ - cb_p = p * p * p; - D = q * q + cb_p; + cb_p = p * p * p; + D = q * q + cb_p; - if (D < 0) /* Casus irreducibilis: three real solutions */ - { - double phi = (1.0/3) * acos(-q / sqrt(-cb_p)); + if (D < 0) /* Casus irreducibilis: three real solutions */ + { + double phi = (1.0 / 3) * acos(-q / sqrt(-cb_p)); double t = 2 * sqrt(-p); - s[ 0 ] = t * cos(phi); - s[ 1 ] = - t * cos(phi + M_PI / 3); - s[ 2 ] = - t * cos(phi - M_PI / 3); + s[0] = t * cos(phi); + s[1] = -t * cos(phi + M_PI / 3); + s[2] = -t * cos(phi - M_PI / 3); num = 3; - } - else /* one real solution */ - { + } + else /* one real solution */ + { double sqrt_D = sqrt(D); double u = cuberoot(sqrt_D - q); - double v = - cuberoot(sqrt_D + q); + double v = -cuberoot(sqrt_D + q); - s[ 0 ] = u + v; + s[0] = u + v; num = 1; - } + } - /* resubstitute */ + /* resubstitute */ - sub = (1.0/3) * A; + sub = (1.0 / 3) * A; - for (i = 0; i < num; ++i) - s[ i ] -= sub; + for (i = 0; i < num; ++i) + s[i] -= sub; - return num; + return num; } double cubicError = 0.0f; @@ -101,97 +101,97 @@ double cleanedCubicError = 0.0f; double quarticError = 0.0f; double cleanedQuarticError = 0.0f; -double evaluateCubic( double x, const double c[4] ) +double evaluateCubic(double x, const double c[4]) { return ((x*c[3] + c[2]) * x + c[1]) * x + c[0]; } -double evaluateCubicDerivative ( double x, const double c[4] ) +double evaluateCubicDerivative(double x, const double c[4]) { return (3.0*x + 2.0*c[2]) * x + c[1]; } -double cleanCubicRoot( double x, const double c[4] ) +double cleanCubicRoot(double x, const double c[4]) { double e; - e = evaluateCubic(x,c); + e = evaluateCubic(x, c); - if(fabs(e) > cubicError) cubicError = e; + if (fabs(e) > cubicError) cubicError = e; // ---------- -// for(int i = 0; i < 10; i++) + // for(int i = 0; i < 10; i++) { - e = evaluateCubic(x,c); + e = evaluateCubic(x, c); e *= 0.8; - double d = evaluateCubicDerivative(x,c); + double d = evaluateCubicDerivative(x, c); - if(d != 0.0) + if (d != 0.0) { - x = x - e/d; + x = x - e / d; } } // ---------- - - e = evaluateCubic(x,c); - if(fabs(e) > cleanedCubicError) cleanedCubicError = e; + e = evaluateCubic(x, c); + + if (fabs(e) > cleanedCubicError) cleanedCubicError = e; return x; } -double evaluateQuartic( double x, const double c[5] ) +double evaluateQuartic(double x, const double c[5]) { return (((x*c[4] + c[3]) * x + c[2]) * x + c[1]) * x + c[0]; } -double evaluateQuarticDerivative ( double x, const double c[5] ) +double evaluateQuarticDerivative(double x, const double c[5]) { return ((4.0*x*c[4] + 3.0*c[3]) * x + 2.0*c[2]) * x + c[1]; } -double cleanQuarticRoot( double x, const double c[4] ) +double cleanQuarticRoot(double x, const double c[5]) { double e; - e = evaluateQuartic(x,c); + e = evaluateQuartic(x, c); - if(fabs(e) > quarticError) quarticError = e; + if (fabs(e) > quarticError) quarticError = e; // ---------- -// for(int i = 0; i < 10; i++) + // for(int i = 0; i < 10; i++) { - e = evaluateQuartic(x,c); + e = evaluateQuartic(x, c); e *= 0.8; - double d = evaluateQuarticDerivative(x,c); + double d = evaluateQuarticDerivative(x, c); - if(d != 0.0) + if (d != 0.0) { - x = x - e/d; + x = x - e / d; } } // ---------- - e = evaluateQuartic(x,c); + e = evaluateQuartic(x, c); - if(fabs(e) > cleanedQuarticError) cleanedQuarticError = e; + if (fabs(e) > cleanedQuarticError) cleanedQuarticError = e; return x; } #ifdef WIN32 - #define isnan(a) _isnan(a) +#define isnan(a) _isnan(a) #endif -int PolySolver::solveQuartic( const double c[5], double s[4] ) +int PolySolver::solveQuartic(const double c[5], double s[4]) { double a3 = c[3] / c[4]; double a2 = c[2] / c[4]; @@ -213,15 +213,15 @@ int PolySolver::solveQuartic( const double c[5], double s[4] ) double s[3]; - int nRoots = PolySolver::solveCubic(c,s); + int nRoots = PolySolver::solveCubic(c, s); - for(int i = 0; i < nRoots; i++) + for (int i = 0; i < nRoots; i++) { - if(s[i] == s[i]) + if (s[i] == s[i]) { // root is real - y1 = cleanCubicRoot( s[i], c ); + y1 = cleanCubicRoot(s[i], c); break; } @@ -230,53 +230,53 @@ int PolySolver::solveQuartic( const double c[5], double s[4] ) // ---------- // use the root to find the roots of the quadric - - double t1 = (1.0/4.0)*(a3*a3) - a2 + y1; + + double t1 = (1.0 / 4.0)*(a3*a3) - a2 + y1; double R = sqrt(t1); double D; - if(R == 0.0) + if (R == 0.0) { double t1 = (y1*y1) - (4.0)*(a0); double t2 = sqrt(t1); - double t3 = (3.0/4.0)*(a3*a3) - (2.0)*(a2) + (2.0)*t2; + double t3 = (3.0 / 4.0)*(a3*a3) - (2.0)*(a2)+(2.0)*t2; D = sqrt(t3); } else { - double t1 = (4.0)*(a3*a2) - (8.0)*(a1) - (a3*a3*a3); + double t1 = (4.0)*(a3*a2) - (8.0)*(a1)-(a3*a3*a3); double t2 = t1 / (4.0 * R); - double t3 = (3.0/4.0)*(a3*a3) - (R*R) - (2.0)*(a2) + t2; + double t3 = (3.0 / 4.0)*(a3*a3) - (R*R) - (2.0)*(a2)+t2; D = sqrt(t3); } - + double E; - if(R == 0.0) + if (R == 0.0) { double t1 = (y1*y1) - (4.0)*(a0); double t2 = sqrt(t1); - double t3 = (3.0/4.0)*(a3*a3) - (2.0)*(a2) - (2.0)*(t2); + double t3 = (3.0 / 4.0)*(a3*a3) - (2.0)*(a2)-(2.0)*(t2); E = sqrt(t3); } else { - double t1 = (4.0)*(a3*a2) - (8.0)*(a1) - (a3*a3*a3); + double t1 = (4.0)*(a3*a2) - (8.0)*(a1)-(a3*a3*a3); double t2 = t1 / (4.0 * R); - double t3 = (3.0/4.0)*(a3*a3) - (R*R) - (2.0)*(a2) - t2; + double t3 = (3.0 / 4.0)*(a3*a3) - (R*R) - (2.0)*(a2)-t2; E = sqrt(t3); } @@ -289,8 +289,8 @@ int PolySolver::solveQuartic( const double c[5], double s[4] ) } else { - s[0] = (-1.0/4.0)*a3 + (1.0/2.0)*R + (1.0/2.0)*D; - s[1] = (-1.0/4.0)*a3 + (1.0/2.0)*R - (1.0/2.0)*D; + s[0] = (-1.0 / 4.0)*a3 + (1.0 / 2.0)*R + (1.0 / 2.0)*D; + s[1] = (-1.0 / 4.0)*a3 + (1.0 / 2.0)*R - (1.0 / 2.0)*D; } if (isnan(E)) @@ -300,18 +300,18 @@ int PolySolver::solveQuartic( const double c[5], double s[4] ) } else { - s[2] = (-1.0/4.0)*a3 - (1.0/2.0)*R + (1.0/2.0)*E; - s[3] = (-1.0/4.0)*a3 - (1.0/2.0)*R - (1.0/2.0)*E; + s[2] = (-1.0 / 4.0)*a3 - (1.0 / 2.0)*R + (1.0 / 2.0)*E; + s[3] = (-1.0 / 4.0)*a3 - (1.0 / 2.0)*R - (1.0 / 2.0)*E; } -/* + /* // Perform one step of a Newton iteration in order to minimize round-off errors int i; for(i = 0; i < 4; i++) { - s[i] = cleanQuarticRoot(s[i],c); + s[i] = cleanQuarticRoot(s[i],c); } */ diff --git a/src/engine/shared/library/sharedTemplateDefinition/src/shared/core/File.cpp b/src/engine/shared/library/sharedTemplateDefinition/src/shared/core/File.cpp index a74f665b9..1d4a230e6 100644 --- a/src/engine/shared/library/sharedTemplateDefinition/src/shared/core/File.cpp +++ b/src/engine/shared/library/sharedTemplateDefinition/src/shared/core/File.cpp @@ -180,9 +180,14 @@ int File::readLine(char *buffer, int bufferSize) int File::print(const char *format, ...) { NOT_NULL(m_fp); + int resultChars = 0; va_list argptr; va_start(argptr, format); - return vfprintf(m_fp, format, argptr); + resultChars = vfprintf(m_fp, format, argptr); + + va_end(argptr); + + return resultChars; } // File::print diff --git a/src/external/3rd/library/platform/utils/Base/Config.cpp b/src/external/3rd/library/platform/utils/Base/Config.cpp index c3950aeed..23f4805d0 100644 --- a/src/external/3rd/library/platform/utils/Base/Config.cpp +++ b/src/external/3rd/library/platform/utils/Base/Config.cpp @@ -31,6 +31,7 @@ bool CConfig::LoadFile(char * file) if (fp == NULL || fp == (FILE *)-1) { //fprintf(stderr,"Failed to open config file %s!",file); + fclose(fp); return false; } diff --git a/src/external/3rd/library/soePlatform/Base/Config.cpp b/src/external/3rd/library/soePlatform/Base/Config.cpp index 3191193d4..f76136b61 100644 --- a/src/external/3rd/library/soePlatform/Base/Config.cpp +++ b/src/external/3rd/library/soePlatform/Base/Config.cpp @@ -27,6 +27,7 @@ bool CConfig::LoadFile(char * file) if (fp == NULL || fp == (FILE *)-1) { //fprintf(stderr,"Failed to open config file %s!",file); + fclose(fp); return false; } diff --git a/src/external/3rd/library/soePlatform/CSAssist/utils/Base/Config.cpp b/src/external/3rd/library/soePlatform/CSAssist/utils/Base/Config.cpp index 1b9e61fbf..559c09011 100644 --- a/src/external/3rd/library/soePlatform/CSAssist/utils/Base/Config.cpp +++ b/src/external/3rd/library/soePlatform/CSAssist/utils/Base/Config.cpp @@ -31,6 +31,7 @@ bool CConfig::LoadFile(char * file) if (fp == NULL || fp == (FILE *)-1) { //fprintf(stderr,"Failed to open config file %s!",file); + fclose(fp); return false; } diff --git a/src/external/3rd/library/soePlatform/ChatAPI2/ChatAPI/utils/Base/Config.cpp b/src/external/3rd/library/soePlatform/ChatAPI2/ChatAPI/utils/Base/Config.cpp index 359af5e7e..dc4cc2348 100644 --- a/src/external/3rd/library/soePlatform/ChatAPI2/ChatAPI/utils/Base/Config.cpp +++ b/src/external/3rd/library/soePlatform/ChatAPI2/ChatAPI/utils/Base/Config.cpp @@ -31,6 +31,7 @@ bool CConfig::LoadFile(char * file) if (fp == NULL || fp == (FILE *)-1) { //fprintf(stderr,"Failed to open config file %s!",file); + fclose(fp); return false; } diff --git a/src/game/client/application/SwgClientSetup/src/win32/SwgClientSetup.cpp b/src/game/client/application/SwgClientSetup/src/win32/SwgClientSetup.cpp index d906a9afc..88fa1cf7e 100644 --- a/src/game/client/application/SwgClientSetup/src/win32/SwgClientSetup.cpp +++ b/src/game/client/application/SwgClientSetup/src/win32/SwgClientSetup.cpp @@ -386,6 +386,7 @@ BOOL SwgClientSetupApp::InitInstance() CString anotherStr; VERIFY(anotherStr.LoadString(IDS_ANOTHER_INSTANCE)); MessageBox(NULL, anotherStr, NULL, MB_OK | MB_ICONSTOP); + CloseHandle(semaphore); return FALSE; } diff --git a/src/game/client/library/swgClientUserInterface/src/shared/parser/SwgCuiCommandParserScene.cpp b/src/game/client/library/swgClientUserInterface/src/shared/parser/SwgCuiCommandParserScene.cpp index f70c80568..10be43269 100644 --- a/src/game/client/library/swgClientUserInterface/src/shared/parser/SwgCuiCommandParserScene.cpp +++ b/src/game/client/library/swgClientUserInterface/src/shared/parser/SwgCuiCommandParserScene.cpp @@ -691,6 +691,7 @@ static void PlayAnimation (const SwgCuiCommandParserScene::StringVector_t & argv messageBuffer[sizeof(messageBuffer) - 1] = '\0'; result = Unicode::narrowToWide(messageBuffer); + fclose(indirectionFile); return; } } diff --git a/src/game/server/application/SwgGameServer/src/win32/WinMain.cpp b/src/game/server/application/SwgGameServer/src/win32/WinMain.cpp index 7d49e9abe..161eb59b5 100644 --- a/src/game/server/application/SwgGameServer/src/win32/WinMain.cpp +++ b/src/game/server/application/SwgGameServer/src/win32/WinMain.cpp @@ -283,6 +283,8 @@ void verifyUpdateRanges (const char* const filename) DEBUG_REPORT_LOG (true, ("OK:\t%s\t%s\t%1.1f\n", serverObjectTemplateName, sharedObjectTemplateName.c_str (), farUpdateRange)); objectTemplate->releaseReference (); } + + fclose(infile); } static std::string currentLintedAsset;