summaryrefslogtreecommitdiff
path: root/gst-libs/gst/gl/gstglshadervariables.c
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2014-11-23 21:43:20 +0000
committerTim-Philipp Müller <tim@centricular.com>2014-11-24 10:02:33 +0000
commit1a613c5d4e05ffbf00e301926834e9c978cc6391 (patch)
treed25524ccc17f00fbca50ecda5788f51dd9119356 /gst-libs/gst/gl/gstglshadervariables.c
parent59085936b820e02734097c17d6dfeb2387f22d9f (diff)
downloadgstreamer-plugins-bad-1a613c5d4e05ffbf00e301926834e9c978cc6391.tar.gz
gl: shadervariables: make parsing of floats locale-independent
Floating point numbers are written differently in different locales, e.g. in many countries 1/2 = 0,5 instead of 0.5, and strtod will not be able to parse "0.5" correctly in such a locale.
Diffstat (limited to 'gst-libs/gst/gl/gstglshadervariables.c')
-rw-r--r--gst-libs/gst/gl/gstglshadervariables.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/gst-libs/gst/gl/gstglshadervariables.c b/gst-libs/gst/gl/gstglshadervariables.c
index d6ad879ce..be04c9499 100644
--- a/gst-libs/gst/gl/gstglshadervariables.c
+++ b/gst-libs/gst/gl/gstglshadervariables.c
@@ -741,7 +741,7 @@ parsevalue (char *value, char *_saveptr, struct gst_gl_shadervariable_desc *ret)
return _saveptr + j;
}
ret->value = (void *) g_malloc (sizeof (float));
- *((float *) ret->value) = (float) strtod (value, NULL);
+ *((float *) ret->value) = (float) g_ascii_strtod (value, NULL);
} else {
ret->value = g_malloc (sizeof (float) * ret->count);
@@ -762,7 +762,7 @@ parsevalue (char *value, char *_saveptr, struct gst_gl_shadervariable_desc *ret)
return _saveptr + (saveptr - t) + j;
}
- ((float *) ret->value)[i] = (float) strtod (t, NULL);
+ ((float *) ret->value)[i] = (float) g_ascii_strtod (t, NULL);
t = strtok_r (0, ",", &saveptr);
}
}
@@ -925,7 +925,7 @@ vec_parsevalue (int n, char *value, char *_saveptr,
return _saveptr + (saveptr - t) + j;
}
- ((float *) ret->value)[i] = (float) strtod (t, NULL);
+ ((float *) ret->value)[i] = (float) g_ascii_strtod (t, NULL);
t = strtok_r (0, ",", &saveptr);
}
@@ -975,7 +975,7 @@ vec_parsevalue (int n, char *value, char *_saveptr,
return _saveptr + (t - value) + j;
}
- ((float *) ret->value)[k * n + i] = (float) strtod (t, NULL);
+ ((float *) ret->value)[k * n + i] = (float) g_ascii_strtod (t, NULL);
t = strtok_r (0, ",", &saveptr);
if (i < (n - 1) && !t)
return _saveptr + (saveptr - value);
@@ -1424,7 +1424,7 @@ mat_parsevalue (int n, int m, char *value, char *_saveptr,
return _saveptr + (saveptr - t) + j;
}
- ((float *) ret->value)[i] = (float) strtod (t, NULL);
+ ((float *) ret->value)[i] = (float) g_ascii_strtod (t, NULL);
t = strtok_r (0, ",", &saveptr);
}
@@ -1474,7 +1474,8 @@ mat_parsevalue (int n, int m, char *value, char *_saveptr,
return _saveptr + (t - value) + j;
}
- ((float *) ret->value)[k * n * m + i] = (float) strtod (t, NULL);
+ ((float *) ret->value)[k * n * m + i] =
+ (float) g_ascii_strtod (t, NULL);
t = strtok_r (0, ",", &saveptr);
if (i < (n * m - 1) && !t)
return _saveptr + (saveptr - value);