[Javabdd-checkins] JavaBDD cudd_jni.c,1.14,1.15
Brought to you by:
joewhaley
From: John W. <joe...@us...> - 2005-07-22 19:36:42
|
Update of /cvsroot/javabdd/JavaBDD In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20511 Modified Files: cudd_jni.c Log Message: Added more fixes, error checking to setVarNum(). Index: cudd_jni.c =================================================================== RCS file: /cvsroot/javabdd/JavaBDD/cudd_jni.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** cudd_jni.c 22 Jul 2005 19:11:50 -0000 1.14 --- cudd_jni.c 22 Jul 2005 19:36:30 -0000 1.15 *************** *** 131,134 **** --- 131,135 ---- int bdds; DdManager* m; + int varnum = Cudd_ReadSize(manager); while (pair_list) { *************** *** 165,169 **** (JNIEnv *env, jclass cl) { ! return varnum; } --- 166,170 ---- (JNIEnv *env, jclass cl) { ! return Cudd_ReadSize(manager); } *************** *** 177,181 **** { jint old = Cudd_ReadSize(manager); ! CuddPairing *p = pair_list; while (p) { int n; --- 178,189 ---- { jint old = Cudd_ReadSize(manager); ! CuddPairing *p; ! if (x < 1 || x < old || x > CUDD_MAXINDEX) { ! jclass cls = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); ! (*env)->ThrowNew(env, cls, "invalid number of variables"); ! (*env)->DeleteLocalRef(env, cls); ! return; ! } ! p = pair_list; while (p) { int n; *************** *** 247,262 **** (JNIEnv *env, jclass cl, jintArray arr) { ! int *a; ! jint size = (*env)->GetArrayLength(env, arr); ! if (size != varnum) { ! jclass cls = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); ! (*env)->ThrowNew(env, cls, "array size != number of vars"); ! (*env)->DeleteLocalRef(env, cls); ! return; ! } ! a = (int*) (*env)->GetPrimitiveArrayCritical(env, arr, NULL); ! if (a == NULL) return; ! Cudd_ShuffleHeap(manager, a); ! (*env)->ReleasePrimitiveArrayCritical(env, arr, a, JNI_ABORT); } --- 255,271 ---- (JNIEnv *env, jclass cl, jintArray arr) { ! int *a; ! int varnum = Cudd_ReadSize(manager); ! jint size = (*env)->GetArrayLength(env, arr); ! if (size != varnum) { ! jclass cls = (*env)->FindClass(env, "java/lang/IllegalArgumentException"); ! (*env)->ThrowNew(env, cls, "array size != number of vars"); ! (*env)->DeleteLocalRef(env, cls); ! return; ! } ! a = (int*) (*env)->GetPrimitiveArrayCritical(env, arr, NULL); ! if (a == NULL) return; ! Cudd_ShuffleHeap(manager, a); ! (*env)->ReleasePrimitiveArrayCritical(env, arr, a, JNI_ABORT); } |