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);
}
|