From d8ab922a070441ad80ad86b93b40bc7e1fd4a7d1 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Wed, 25 May 2011 00:09:48 +0200 Subject: [PATCH 1/1] Throw an exception if return value shows an error. The variable was already here, why not checking its value? It is certainly not perfect, but better than nothing. --- src/xbt/graph.c | 9 +++++++++ src/xbt/mmalloc/mmap-sup.c | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/xbt/graph.c b/src/xbt/graph.c index f103366556..b81e0d409a 100644 --- a/src/xbt/graph.c +++ b/src/xbt/graph.c @@ -7,6 +7,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "simgrid_config.h" /* getline */ +#include #include #include "xbt/sysdep.h" #include "xbt/log.h" @@ -743,6 +744,8 @@ xbt_graph_t xbt_graph_load (const char *filename) size_t size; char *nnodes_str = NULL; read = getline (&nnodes_str, &size, file); + if (read == -1) + THROWF(system_error, 0, "getline failed to read the number of nodes (errno = %d)", errno); int i, nnodes = atoi (nnodes_str); free (nnodes_str); @@ -750,6 +753,8 @@ xbt_graph_t xbt_graph_load (const char *filename) for (i = 0; i < nnodes; i++){ char *node_str = NULL; read = getline (&node_str, &size, file); + if (read == -1) + THROWF(system_error, 0, "getline failed to read all nodes (errno = %d)", errno); xbt_node_t n; char *name = xbt_strdup (node_str); xbt_str_subst (name, '\n', '\0', 0); @@ -761,6 +766,8 @@ xbt_graph_t xbt_graph_load (const char *filename) //read the number of edges char *nedges_str = NULL; read = getline (&nedges_str, &size, file); + if (read == -1) + THROWF(system_error, 0, "getline failed to read the number of edges (errno = %d)", errno); int nedges = atoi (nedges_str); free (nedges_str); @@ -768,6 +775,8 @@ xbt_graph_t xbt_graph_load (const char *filename) for (i = 0; i < nedges; i++){ char *edge_str = NULL, edge_id[200], node_source[200], node_target[200]; read = getline (&edge_str, &size, file); + if (read == -1) + THROWF(system_error, 0, "getline failed to read all edges (errno = %d)", errno); sscanf (edge_str, "%s %s %s", edge_id, node_source, node_target); free (edge_str); xbt_str_subst (edge_id, '\n', '\0', 0); diff --git a/src/xbt/mmalloc/mmap-sup.c b/src/xbt/mmalloc/mmap-sup.c index ad2692cc17..28f89bc386 100644 --- a/src/xbt/mmalloc/mmap-sup.c +++ b/src/xbt/mmalloc/mmap-sup.c @@ -109,9 +109,11 @@ void *__mmalloc_mmap_morecore(struct mdesc *mdp, int size) foffset = (char *) mdp->top - (char *) mdp->base; if (mdp->fd > 0) { - /* FIXME: Test results of lseek() and write() */ + /* FIXME: Test results of lseek() */ lseek(mdp->fd, foffset + mapbytes - 1, SEEK_SET); test = write(mdp->fd, &buf, 1); + if (test == -1) + THROWF(system_error, 0, "write to mmap'ed fd failed! error: %s", strerror(errno)); } /* Let's call mmap. Note that it is possible that mdp->top -- 2.20.1