Changeset: a91eccaacae8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a91eccaacae8
Modified Files:
        sql/storage/bat/bat_logger.c
Branch: mangled
Log Message:

Work around bug in Visual Studio 2017.
It looks like the compiler evaluates
&(lng){BATcount(funcs_name_mangled_final_order)} too early (before the
assignment to funcs_name_mangled_final_order earlier in the expression).


diffs (23 lines):

diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -3354,13 +3354,17 @@ bl_postversion(void *Store, void *Lg)
                }
 
                {
-                       BAT *funcs_name_mangled_final_order = NULL;
+                       BAT *funcs_name_mangled_final_order;
                        if (
                                (funcs_name_mangled_final_order = 
BATconstant(funcs_name->hseqbase, TYPE_str, &str_nil, BATcount(funcs_name), 
PERSISTENT)) == NULL ||
                                BATreplace(funcs_name_mangled_final_order, 
funcs_name_mangled_rid, funcs_name_mangled, false) != GDK_SUCCEED ||
                                (funcs_name_mangled_final_order = 
BATsetaccess(funcs_name_mangled_final_order, BAT_READ)) == NULL ||
                                BUNappend(lg->catalog_id, &(int) {2165}, false) 
!= GDK_SUCCEED || // 2165 is sys.functions.mangled_name
-                               BUNappend(lg->catalog_bid, 
&funcs_name_mangled_final_order->batCacheid, false) != GDK_SUCCEED ||
+                               BUNappend(lg->catalog_bid, 
&funcs_name_mangled_final_order->batCacheid, false) != GDK_SUCCEED) {
+                               bat_destroy(funcs_name_mangled_final_order);
+                               goto bailout;
+                       }
+                       if (
                                (lg->catalog_lid        && 
BUNappend(lg->catalog_lid, &lng_nil, false) != GDK_SUCCEED) ||
                                (lg->catalog_cnt    && 
BUNappend(lg->catalog_cnt, &(lng){BATcount(funcs_name_mangled_final_order)}, 
false) != GDK_SUCCEED) ||
                                (old_lg                         && 
BUNappend(old_lg->add, &funcs_name_mangled_final_order->batCacheid, false) != 
GDK_SUCCEED)) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to