aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@mines-paris.org>2018-08-11 11:34:36 +0200
committerGitHub <noreply@github.com>2018-08-11 11:34:36 +0200
commit0ee56a0de9d8708974fd854ff091e11c844df9d9 (patch)
tree35eafecc76d4cf06aa6017db14e7124774889dae
parent7b7e69690d13bd5d6b6468c6a11a81f871bd7127 (diff)
parent143b4d3f64e0828a3b03dd9ed997dd5412c2b25a (diff)
downloadPROJ-0ee56a0de9d8708974fd854ff091e11c844df9d9.tar.gz
PROJ-0ee56a0de9d8708974fd854ff091e11c844df9d9.zip
Merge pull request #1087 from rouault/gcc_8_fix
Fix wrong behaviour of torad_coord() with gcc 8.1 -O2 (fixes #1084)
-rw-r--r--src/pj_param.c2
-rw-r--r--src/projects.h7
2 files changed, 7 insertions, 2 deletions
diff --git a/src/pj_param.c b/src/pj_param.c
index 6cee4d1f..7ed0e377 100644
--- a/src/pj_param.c
+++ b/src/pj_param.c
@@ -42,7 +42,7 @@ paralist *pj_mkparam_ws (char *str) {
}
/* Use calloc to automagically 0-terminate the copy */
- newitem = (paralist *) pj_calloc (1, sizeof(paralist) + len);
+ newitem = (paralist *) pj_calloc (1, sizeof(paralist) + len + 1);
if (0==newitem)
return 0;
memmove(newitem->param, str, len);
diff --git a/src/projects.h b/src/projects.h
index 2dc073fa..928985f6 100644
--- a/src/projects.h
+++ b/src/projects.h
@@ -458,7 +458,12 @@ struct PJconsts {
struct ARG_list {
paralist *next;
char used;
- char param[1];
+#ifdef __GNUC__
+ char param[0]; /* variable-length member */
+ /* Safer to use [0] for gcc. See https://github.com/OSGeo/proj.4/pull/1087 */
+#else
+ char param[1]; /* variable-length member */
+#endif
};