Changeset: 0b8267c2bc07 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0b8267c2bc07
Modified Files:
sql/backends/monet5/vaults/gadget/gadget.c
Branch: data-vaults
Log Message:
Handle fread returning 0 in a better way
We should not assert that the return value is non zero, but we should check and
raise an error.
TODO Release any previously acquired resources
diffs (169 lines):
diff --git a/sql/backends/monet5/vaults/gadget/gadget.c
b/sql/backends/monet5/vaults/gadget/gadget.c
--- a/sql/backends/monet5/vaults/gadget/gadget.c
+++ b/sql/backends/monet5/vaults/gadget/gadget.c
@@ -304,12 +304,12 @@ str gadgetListDirAll(Client cntxt, MalBl
index = 308 + h.npartTotal * 32;
fseek(stream, index, SEEK_SET);
- retval = fread(binbytes, nbins * 4, 1, stream);
-#ifndef NDEBUG
- assert(retval);
-#else
- (void) retval;
-#endif
+ retval = fread(binbytes, nbins * 4, 1, stream);
+ if (retval == 0) {
+ fclose(stream);
+ msg = createException(SQL, "gadget.attach",
"Error occurred while reading file\n");
+ return msg;
+ }
for (j = 0; j < nbins; j++)
{
@@ -1165,7 +1165,12 @@ str gadgetLoadTable(Client cntxt, MalBlk
//NOTE: Convert C# blob.Read to fread
//int retval = stream.Read(pos, 0, 12 * header.npartTotal);
retval = fread(posB, 12 * h.npartTotal, 1, stream);
- assert(retval);
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(stream);
+ msg = createException(SQL, "gadget.attach", "Error occurred while
reading file\n");
+ return msg;
+ }
index = MRSNAP_VEL_OFFSET + h.npartTotal * 12; // skip over positions
@@ -1176,7 +1181,12 @@ str gadgetLoadTable(Client cntxt, MalBlk
//NOTE: Convert C# blob.Read to fread
//retval = stream.Read(vel, 0, 12 * header.npartTotal);
retval = fread(velB, 12 * h.npartTotal, 1, stream);
- assert(retval);
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(stream);
+ msg = createException(SQL, "gadget.attach", "Error occurred while
reading file\n");
+ return msg;
+ }
index = MRSNAP_ID_OFFSET + h.npartTotal * 24; // skip over positions and
velocities
//NOTE: Convert C# blob.Seek to fseek
@@ -1186,7 +1196,12 @@ str gadgetLoadTable(Client cntxt, MalBlk
//NOTE: Convert C# blob.Read to fread
//retval = stream.Read(id, 0, 8 * header.npartTotal);
retval = fread(idB, 8 * h.npartTotal, 1, stream);
- assert(retval);
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(stream);
+ msg = createException(SQL, "gadget.attach", "Error occurred while
reading file\n");
+ return msg;
+ }
for (i = 0; i < h.npartTotal; i++)
{
@@ -1423,7 +1438,12 @@ str gadgetLoadTableAll(Client cntxt, Mal
//NOTE: Convert C# blob.Read to fread
//int retval = stream.Read(pos, 0, 12 * header.npartTotal);
retval = fread(posB, 12 * hs[i].npartTotal, 1, streams[i]);
- assert(retval);
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(streams[i]);
+ msg = createException(SQL, "gadget.attach", "Error occurred
while reading file\n");
+ return msg;
+ }
index = MRSNAP_VEL_OFFSET + hs[i].npartTotal * 12; // skip over positions
@@ -1434,7 +1454,12 @@ str gadgetLoadTableAll(Client cntxt, Mal
//NOTE: Convert C# blob.Read to fread
//retval = stream.Read(vel, 0, 12 * header.npartTotal);
retval = fread(velB, 12 * hs[i].npartTotal, 1, streams[i]);
- assert(retval);
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(streams[i]);
+ msg = createException(SQL, "gadget.attach", "Error occurred
while reading file\n");
+ return msg;
+ }
index = MRSNAP_ID_OFFSET + hs[i].npartTotal * 24; // skip over positions
and velocities
//NOTE: Convert C# blob.Seek to fseek
@@ -1444,8 +1469,12 @@ str gadgetLoadTableAll(Client cntxt, Mal
//NOTE: Convert C# blob.Read to fread
//retval = stream.Read(id, 0, 8 * header.npartTotal);
retval = fread(idB, 8 * hs[i].npartTotal, 1, streams[i]);
- assert(retval);
-
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(streams[i]);
+ msg = createException(SQL, "gadget.attach", "Error occurred
while reading file\n");
+ return msg;
+ }
for (j = 0; j < hs[i].npartTotal; j++)
{
int k = j * 12;
@@ -1694,7 +1723,12 @@ gadgetLoadTableAll_(mvc *m, sql_schema *
//NOTE: Convert C# blob.Read to fread
//int retval = stream.Read(pos, 0, 12 * header.npartTotal);
retval = fread(posB, 12 * hs[i].npartTotal, 1, streams[i]);
- assert(retval);
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(streams[i]);
+ msg = createException(SQL, "gadget.attach", "Error occurred
while reading file\n");
+ return msg;
+ }
index = MRSNAP_VEL_OFFSET + hs[i].npartTotal * 12; // skip over positions
@@ -1705,8 +1739,12 @@ gadgetLoadTableAll_(mvc *m, sql_schema *
//NOTE: Convert C# blob.Read to fread
//retval = stream.Read(vel, 0, 12 * header.npartTotal);
retval = fread(velB, 12 * hs[i].npartTotal, 1, streams[i]);
- assert(retval);
-
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(streams[i]);
+ msg = createException(SQL, "gadget.attach", "Error occurred
while reading file\n");
+ return msg;
+ }
index = MRSNAP_ID_OFFSET + hs[i].npartTotal * 24; // skip over positions
and velocities
//NOTE: Convert C# blob.Seek to fseek
//stream.Seek(index, SeekOrigin.Begin);
@@ -1715,8 +1753,12 @@ gadgetLoadTableAll_(mvc *m, sql_schema *
//NOTE: Convert C# blob.Read to fread
//retval = stream.Read(id, 0, 8 * header.npartTotal);
retval = fread(idB, 8 * hs[i].npartTotal, 1, streams[i]);
- assert(retval);
-
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(streams[i]);
+ msg = createException(SQL, "gadget.attach", "Error occurred
while reading file\n");
+ return msg;
+ }
/*Check if there are PHBins, if yes collect them*/
if (hs[i].hashtabsize > 0)
{
@@ -1739,10 +1781,13 @@ gadgetLoadTableAll_(mvc *m, sql_schema *
index = 308 + hs[i].npartTotal * 32;
fseek(streams[i], index, SEEK_SET);
- retval = fread(binbytes, nbins * 4, 1, streams[i]);
-#ifndef NDEBUG
- assert(retval);
-#endif
+ retval = fread(binbytes, nbins * 4, 1, streams[i]);
+ if (retval == 0) {
+ // TODO make sure there are no memory leaks
+ fclose(streams[i]);
+ msg = createException(SQL, "gadget.attach", "Error
occurred while reading file\n");
+ return msg;
+ }
for (j = 0; j < nbins; j++)
{
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list