Subject: | [PATCH] logic error with is_nested_call |
There's wrong paren with is_nested_call, it does not test the parent call
depth >= 1, only if 0.
is_nested_call = (call_depth > 1 || (DBIc_PARENT_COM(imp_xxh) &&
DBIc_CALL_DEPTH(DBIc_PARENT_COM(imp_xxh))) >= 1);
Also note that clang-3.1 miscompiles the && short-cut here and checks
DBIc_CALL_DEPTH even if DBIc_PARENT_COM is zero.
--
Reini Urban
Subject: | DBI-1.616-nested_call.patch |
difforig
diff -u ./DBI.xs.orig
--- ./DBI.xs.orig 2010-12-21 16:59:27.000000000 -0600
+++ ./DBI.xs 2011-12-08 16:01:09.061806831 -0600
@@ -3237,8 +3237,7 @@
}
}
- is_nested_call = (call_depth > 1 || (DBIc_PARENT_COM(imp_xxh) && DBIc_CALL_DEPTH(DBIc_PARENT_COM(imp_xxh))) >= 1);
-
+ is_nested_call = (call_depth > 1 || (DBIc_PARENT_COM(imp_xxh) && DBIc_CALL_DEPTH(DBIc_PARENT_COM(imp_xxh)) >= 1));
/* --- dispatch --- */