Changeset: 77a6207dcdb7 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=77a6207dcdb7
Modified Files:
MonetDB/src/gdk/gdk_bbp.mx
MonetDB5/src/modules/kernel/bat5.mx
Branch: default
Log Message:
merge with Jun2010:
numerous reference-counting fixes
diffs (190 lines):
diff -r 00e27361f6fe -r 77a6207dcdb7 MonetDB5/src/modules/kernel/bat5.mx
--- a/MonetDB5/src/modules/kernel/bat5.mx Fri Jun 18 12:59:57 2010 +0200
+++ b/MonetDB5/src/modules/kernel/bat5.mx Sat Jun 19 21:14:10 2010 +0200
@@ -2397,13 +2397,12 @@
}
CMDreverse(&bn, b);
+ BBPreleaseref(b->batCacheid);
if (bn) {
*ret = bn->batCacheid;
BBPkeepref(bn->batCacheid);
- BBPreleaseref(b->batCacheid);
return MAL_SUCCEED;
}
- BBPreleaseref(b->batCacheid);
throw(MAL, "bat.reverse", GDK_EXCEPTION);
}
@@ -2436,7 +2435,7 @@
}
bn= BATrevert(b);
if(bn==NULL ){
- BBPkeepref(*ret= b->batCacheid);
+ BBPreleaseref(b->batCacheid);
throw(MAL, "bat.revert", GDK_EXCEPTION);
}
BBPkeepref(*ret= bn->batCacheid);
@@ -2452,11 +2451,12 @@
throw(MAL, "bat.order", RUNTIME_OBJECT_MISSING);
}
bn= BATorder(b);
+ if (bn != b)
+ BBPreleaseref(b->batCacheid);
if(bn==NULL ){
- BBPkeepref(*ret= b->batCacheid);
throw(MAL, "bat.order", GDK_EXCEPTION);
}
- BBPkeepref(*ret= b->batCacheid);
+ BBPkeepref(*ret= bn->batCacheid);
return MAL_SUCCEED;
}
@@ -2470,11 +2470,12 @@
throw(MAL, "bat.order_rev", RUNTIME_OBJECT_MISSING);
}
bn= BATorder_rev(b);
+ if (bn != b)
+ BBPreleaseref(b->batCacheid);
if(bn==NULL ){
- BBPkeepref(*ret= b->batCacheid);
throw(MAL, "bat.order_rev", GDK_EXCEPTION);
}
- BBPkeepref(*ret= b->batCacheid);
+ BBPkeepref(*ret= bn->batCacheid);
return MAL_SUCCEED;
}
@@ -2545,7 +2546,7 @@
}
CMDsetaccess(&b,i,¶m);
if (BATins(b, s,FALSE) == NULL) {
- BBPkeepref(*r=b->batCacheid);
+ BBPreleaseref(b->batCacheid);
BBPreleaseref(s->batCacheid);
BBPreleaseref(i->batCacheid);
throw(MAL, "bat.insert", GDK_EXCEPTION);
@@ -2597,6 +2598,7 @@
@:derefStr(b,t,t)@
if (BUNreplace(b, h, t, 0) == NULL) {
BBPreleaseref(b->batCacheid);
+ BBPreleaseref(i->batCacheid);
throw(MAL, "bat.replace", GDK_EXCEPTION);
}
BBPkeepref(*r=b->batCacheid);
@@ -2623,6 +2625,8 @@
BBPreleaseref(i->batCacheid);
BBPreleaseref(s->batCacheid);
BBPreleaseref(b->batCacheid);
+ if( bn)
+ BBPreleaseref(bn->batCacheid);
throw(MAL, "bat.replace", OPERATION_FAILED);
}
BBPkeepref(*r=bn->batCacheid);
@@ -2646,12 +2650,12 @@
BBPreleaseref(b->batCacheid);
throw(MAL, "bat.replace", OPERATION_FAILED);
}
- if(bn->batCacheid != b->batCacheid){
+ if(bn->batCacheid != b->batCacheid) {
BBPreleaseref(b->batCacheid);
+ BBPreleaseref(bn->batCacheid);
throw(MAL, "bat.replace", OPERATION_FAILED "Different BAT
returned");
}
BBPkeepref(*r=bn->batCacheid);
- BBPreleaseref(b->batCacheid);
return MAL_SUCCEED;
}
@@ -2671,11 +2675,12 @@
if (bn == NULL || bn->batCacheid != b->batCacheid){
BBPreleaseref(s->batCacheid);
BBPreleaseref(b->batCacheid);
+ if (bn)
+ BBPreleaseref(bn->batCacheid);
throw(MAL, "bat.replace_bat", OPERATION_FAILED);
}
BBPkeepref(*r=bn->batCacheid);
BBPreleaseref(s->batCacheid);
- BBPreleaseref(b->batCacheid);
return MAL_SUCCEED;
}
@@ -2694,8 +2699,11 @@
BBPreleaseref(b->batCacheid);
throw(MAL, "bat.delete_bun", OPERATION_FAILED);
}
- if(bn->batCacheid != b->batCacheid)
+ if(bn->batCacheid != b->batCacheid) {
+ BBPreleaseref(b->batCacheid);
+ BBPreleaseref(bn->batCacheid);
throw(MAL, "bat.delete_bun", OPERATION_FAILED "Different BAT
returned");
+ }
BBPkeepref(*r=bn->batCacheid);
return MAL_SUCCEED;
}
@@ -2714,8 +2722,11 @@
BBPreleaseref(b->batCacheid);
throw(MAL, "bat.delete", OPERATION_FAILED);
}
- if (bn->batCacheid != b->batCacheid)
+ if (bn->batCacheid != b->batCacheid) {
+ BBPreleaseref(b->batCacheid);
+ BBPreleaseref(bn->batCacheid);
throw(MAL, "bat.delete", OPERATION_FAILED "Different BAT
returned");
+ }
BBPkeepref(*r=bn->batCacheid);
return MAL_SUCCEED;
}
@@ -2734,6 +2745,7 @@
throw(MAL, "bat.delete_all", OPERATION_FAILED);
}
if(bn->batCacheid != b->batCacheid){
+ BBPreleaseref(b->batCacheid);
BBPreleaseref(bn->batCacheid);
throw(MAL, "bat.delete_all", OPERATION_FAILED "Different BAT
returned");
}
@@ -2996,7 +3008,7 @@
throw(MAL, "bat.inplace", RUNTIME_OBJECT_MISSING);
}
void_inplace5(o, *id, t,FALSE);
- BBPreleaseref(*r = o->batCacheid);
+ BBPkeepref(*r = o->batCacheid);
return MAL_SUCCEED;
}
@@ -3010,7 +3022,7 @@
throw(MAL, "bat.inplace", RUNTIME_OBJECT_MISSING);
}
void_inplace5(o, *id, t, *force);
- BBPreleaseref(*r = o->batCacheid);
+ BBPkeepref(*r = o->batCacheid);
return MAL_SUCCEED;
}
@@ -3028,7 +3040,7 @@
throw(MAL, "bat.inplace", RUNTIME_OBJECT_MISSING);
}
void_replace_bat5(o, d,FALSE);
- BBPreleaseref(*r = o->batCacheid);
+ BBPkeepref(*r = o->batCacheid);
BBPreleaseref(d->batCacheid);
return MAL_SUCCEED;
}
@@ -3047,7 +3059,7 @@
throw(MAL, "bat.inplace", RUNTIME_OBJECT_MISSING);
}
void_replace_bat5(o, d, *force);
- BBPreleaseref(*r = o->batCacheid);
+ BBPkeepref(*r = o->batCacheid);
BBPreleaseref(d->batCacheid);
return MAL_SUCCEED;
}
@@ -3412,7 +3424,6 @@
return MAL_SUCCEED;
}
BBPreleaseref(*bid);
- BBPreleaseref(b->batCacheid);
throw(MAL, "BKCinfo", GDK_EXCEPTION);
}
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list