X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/317663247e94436ce26f2668ab8039dfa7bb5787..78ac928c4967374d4c7ad5b3024f188074eab36b:/src/dem.c diff --git a/src/dem.c b/src/dem.c index 19b3486a..84c257e9 100644 --- a/src/dem.c +++ b/src/dem.c @@ -2,6 +2,7 @@ * viking -- GPS Data and Topo Analyzer, Explorer, and Manager * * Copyright (C) 2003-2008, Evan Battaglia + * Copyright (C) 2007, Quy Tonthat * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,11 +20,21 @@ * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include +#ifdef HAVE_STRING_H #include +#endif #include +#ifdef HAVE_MATH_H #include +#endif +#ifdef HAVE_STDLIB_H #include +#endif #include #include #include @@ -319,6 +330,7 @@ static VikDEM *vik_dem_read_srtm_hgt(const gchar *file_name, const gchar *basena gint num_rows; GMappedFile *mf; gint arcsec; + GError *error = NULL; dem = g_malloc(sizeof(VikDEM)); @@ -339,8 +351,9 @@ static VikDEM *vik_dem_read_srtm_hgt(const gchar *file_name, const gchar *basena dem->columns = g_ptr_array_new(); dem->n_columns = 0; - if ((mf = g_mapped_file_new(file_name, FALSE, NULL)) == NULL) { - g_error("%s(): couldn't map temp file\n", __PRETTY_FUNCTION__); + if ((mf = g_mapped_file_new(file_name, FALSE, &error)) == NULL) { + g_error(_("Couldn't map file %s: %s"), file_name, error->message); + g_error_free(error); g_free(dem); return NULL; } @@ -429,11 +442,14 @@ VikDEM *vik_dem_new_from_file(const gchar *file) /* Header */ f = g_fopen(file, "r"); - if ( !f ) + if ( !f ) { + g_free ( rv ); return NULL; + } buffer[fread(buffer, 1, DEM_BLOCK_SIZE, f)] = '\0'; if ( ! dem_parse_header ( buffer, rv ) ) { g_free ( rv ); + fclose(f); return NULL; } /* TODO: actually use header -- i.e. GET # OF COLUMNS EXPECTED */