From 62406291be702130e740d99bf0e23767aff3b3be Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Sun, 2 Nov 2014 18:22:06 +0000 Subject: [PATCH] SF Bugs#115: Fix application hanging on degrees input ending in a comma. Need to detect when the processing endptr hasn't changed in analysing the text input, otherwise the while loop will get stuck in an infinite loop. --- src/degrees_converters.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/degrees_converters.c b/src/degrees_converters.c index f78b178f..1703ef0e 100644 --- a/src/degrees_converters.c +++ b/src/degrees_converters.c @@ -178,8 +178,13 @@ gdouble convert_dms_to_dec(const gchar *dms) gdouble value; ptr = strpbrk (endptr, "0123456789,."); if (ptr != NULL) { - value = g_strtod((const gchar *)ptr, (gchar **)&endptr); - nbFloat++; + gchar *tmpptr = endptr; + value = g_strtod((const gchar *)ptr, (gchar **)&endptr); + // Detect when endptr hasn't changed (which may occur if no conversion took place) + // particularly if the last character is a ',' or there are multiple '.'s like '5.5.' + if ( endptr == tmpptr ) + break; + nbFloat++; switch(nbFloat) { case 1: d = value; -- 2.39.5