Changeset: 7cb511f7085d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7cb511f7085d
Modified Files:
        gdk/gdk_logger.c
Branch: Mar2025
Log Message:

Do proper error checking, not error checking using assert.


diffs (112 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -576,6 +576,11 @@ log_read_updates(logger *lg, trans *tr, 
                        for (; res == LOG_OK && nr > 0; nr--) {
                                size_t hlen = sizeof(oid);
                                void *h = rh(hv, &hlen, lg->input_log, 1);
+                               if (h == NULL) {
+                                       res = LOG_EOF;
+                                       TRC_CRITICAL(GDK, "read failed\n");
+                                       break;
+                               }
                                assert(hlen == sizeof(oid));
                                assert(h == hv);
                                if ((uid && BUNappend(uid, h, true) != 
GDK_SUCCEED)) {
@@ -583,52 +588,54 @@ log_read_updates(logger *lg, trans *tr, 
                                        res = LOG_ERR;
                                }
                        }
-                       nr = pnr;
-                       if (tpe == TYPE_msk) {
-                               if (r) {
-                                       if (mnstr_readIntArray(lg->input_log, 
Tloc(r, 0), (size_t) ((nr + 31) / 32)))
-                                               BATsetcount(r, (BUN) nr);
-                                       else {
-                                               TRC_CRITICAL(GDK, "read 
failed\n");
-                                               res = LOG_EOF;
-                                       }
-                               } else {
-                                       for (lng i = 0; i < nr; i += 32) {
-                                               int v;
-                                               switch 
(mnstr_readInt(lg->input_log, &v)) {
-                                               case 1:
-                                                       continue;
-                                               case 0:
+                       if (res == LOG_OK) {
+                               nr = pnr;
+                               if (tpe == TYPE_msk) {
+                                       if (r) {
+                                               if 
(mnstr_readIntArray(lg->input_log, Tloc(r, 0), (size_t) ((nr + 31) / 32)))
+                                                       BATsetcount(r, (BUN) 
nr);
+                                               else {
+                                                       TRC_CRITICAL(GDK, "read 
failed\n");
                                                        res = LOG_EOF;
-                                                       break;
-                                               default:
-                                                       res = LOG_ERR;
+                                               }
+                                       } else {
+                                               for (lng i = 0; i < nr; i += 
32) {
+                                                       int v;
+                                                       switch 
(mnstr_readInt(lg->input_log, &v)) {
+                                                       case 1:
+                                                               continue;
+                                                       case 0:
+                                                               res = LOG_EOF;
+                                                               break;
+                                                       default:
+                                                               res = LOG_ERR;
+                                                               break;
+                                                       }
+                                                       TRC_CRITICAL(GDK, "read 
failed\n");
                                                        break;
                                                }
-                                               TRC_CRITICAL(GDK, "read 
failed\n");
-                                               break;
                                        }
-                               }
-                       } else if (tpe == TYPE_str) {
-                               /* efficient string */
-                               res = string_reader(lg, r, nr);
-                       } else {
-                               for (; res == LOG_OK && nr > 0; nr--) {
-                                       size_t tlen = lg->rbufsize;
-                                       void *t = rt(lg->rbuf, &tlen, 
lg->input_log, 1);
-
-                                       if (t == NULL) {
-                                               if (strstr(GDKerrbuf, "malloc") 
== NULL)
-                                                       res = LOG_EOF;
-                                               else
-                                                       res = LOG_ERR;
-                                               TRC_CRITICAL(GDK, "read 
failed\n");
-                                       } else {
-                                               lg->rbuf = t;
-                                               lg->rbufsize = tlen;
-                                               if ((r && BUNappend(r, t, true) 
!= GDK_SUCCEED)) {
-                                                       TRC_CRITICAL(GDK, 
"append to bat failed\n");
-                                                       res = LOG_ERR;
+                               } else if (tpe == TYPE_str) {
+                                       /* efficient string */
+                                       res = string_reader(lg, r, nr);
+                               } else {
+                                       for (; res == LOG_OK && nr > 0; nr--) {
+                                               size_t tlen = lg->rbufsize;
+                                               void *t = rt(lg->rbuf, &tlen, 
lg->input_log, 1);
+
+                                               if (t == NULL) {
+                                                       if (strstr(GDKerrbuf, 
"malloc") == NULL)
+                                                               res = LOG_EOF;
+                                                       else
+                                                               res = LOG_ERR;
+                                                       TRC_CRITICAL(GDK, "read 
failed\n");
+                                               } else {
+                                                       lg->rbuf = t;
+                                                       lg->rbufsize = tlen;
+                                                       if ((r && BUNappend(r, 
t, true) != GDK_SUCCEED)) {
+                                                               
TRC_CRITICAL(GDK, "append to bat failed\n");
+                                                               res = LOG_ERR;
+                                                       }
                                                }
                                        }
                                }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to