From 79cf0ffb580e53f7125c8509ca51f95aeeb9dcee Mon Sep 17 00:00:00 2001 From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de> Date: Mon, 15 May 2017 09:54:43 +0200 Subject: [PATCH] gridInqXCvalsSerial: bug fix. --- src/grid.c | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/grid.c b/src/grid.c index 08187a9b4..82b77d1bf 100644 --- a/src/grid.c +++ b/src/grid.c @@ -1550,19 +1550,17 @@ int gridInqXCvalsSerial(grid_t *gridptr, char **xcvals) Error("Function only valid for grid type 'GRID_CHARXY'."); int size = gridptr->x.size; - const char **gridptr_xcvals = gridptr->vtable->inqXCvalsPtr(gridptr); - if ( size == 0 || !gridptr_xcvals ) - Error("No string coordinates found!"); - - int stringlen = strlen(gridptr_xcvals[0]); - if ( stringlen == 0 ) - Error("Length of string coordinates not defined."); + int maxclength = 0; - if ( xcvals ) - for ( int i = 0; i < size; i++ ) - memcpy(xcvals[i], gridptr_xcvals[i], (size_t)stringlen * sizeof(char)); + const char **gridptr_xcvals = gridptr->vtable->inqXCvalsPtr(gridptr); + if ( gridptr_xcvals && size && xcvals ) + { + maxclength = gridptr->x.clength; + for ( int i = 0; i < size; i++ ) + memcpy(xcvals[i], gridptr_xcvals[i], (size_t)maxclength*sizeof(char)); + } - return (int)stringlen; + return maxclength; } static @@ -1646,21 +1644,17 @@ int gridInqYCvalsSerial(grid_t *gridptr, char **ycvals) Error("Function only valid for grid type 'GRID_CHARXY'."); int size = gridptr->y.size; - int stringlen = 0; + int maxclength = 0; - if ( gridptr->y.cvals ) + const char **gridptr_ycvals = gridptr->vtable->inqYCvalsPtr(gridptr); + if ( gridptr_ycvals && size && ycvals ) { - if ( size && ycvals ) - { - const char **gridptr_ycvals = gridptr->vtable->inqYCvalsPtr(gridptr); - stringlen = strlen(gridptr_ycvals[0]); - memcpy(ycvals, gridptr_ycvals, (size_t)size * sizeof ( (size_t)stringlen * sizeof(char))); - } + maxclength = gridptr->y.clength; + for ( int i = 0; i < size; i++ ) + memcpy(ycvals[i], gridptr_ycvals[i], (size_t)maxclength*sizeof(char)); } - else - size = 0; - return (int)stringlen; + return maxclength; } static -- GitLab