[libmanette] mapping: Use debug rather than critical for parsing errors
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libmanette] mapping: Use debug rather than critical for parsing errors
- Date: Sun, 22 Nov 2020 12:42:20 +0000 (UTC)
commit 8c1c5e286cbee62fcbdc3ce864e82d93f55864dd
Author: Adrien Plazas <kekun plazas laposte net>
Date: Sun Nov 22 10:23:33 2020 +0100
mapping: Use debug rather than critical for parsing errors
These aren't programming errors from our side nor from the library
user's side, but from some bad data.
src/manette-mapping.c | 55 +++++++++++++++++++++++++++++++++++----------------
1 file changed, 38 insertions(+), 17 deletions(-)
---
diff --git a/src/manette-mapping.c b/src/manette-mapping.c
index 5a3f109..ed4b1a3 100644
--- a/src/manette-mapping.c
+++ b/src/manette-mapping.c
@@ -35,6 +35,27 @@ G_DEFINE_TYPE (ManetteMapping, manette_mapping, G_TYPE_OBJECT)
G_DEFINE_BOXED_TYPE (ManetteMappingBinding, manette_mapping_binding, manette_mapping_binding_copy,
manette_mapping_binding_free)
+#ifdef G_DISABLE_CHECKS
+
+#define manette_ensure_is_parseable(expr) G_STMT_START{ (void)0; }G_STMT_END
+
+#else
+
+#define manette_ensure_is_parseable(expr) \
+ G_STMT_START { \
+ if (G_LIKELY (expr != NULL)) { } \
+ else { \
+ g_log (G_LOG_DOMAIN, \
+ G_LOG_LEVEL_DEBUG, \
+ "%s: expression '%s' not parseable", \
+ G_STRFUNC, \
+ #expr); \
+ return FALSE; \
+ } \
+ } G_STMT_END
+
+#endif
+
/* Private */
static void
@@ -96,9 +117,9 @@ try_str_to_guint16 (gchar *start,
gchar **end,
guint16 *result)
{
- g_return_val_if_fail (start != NULL, FALSE);
- g_return_val_if_fail (end != NULL, FALSE);
- g_return_val_if_fail (result != NULL, FALSE);
+ manette_ensure_is_parseable (start);
+ manette_ensure_is_parseable (end);
+ manette_ensure_is_parseable (result);
errno = 0;
*result = strtol (start, end, 10);
@@ -111,9 +132,9 @@ parse_mapping_input_type (gchar *start,
gchar **end,
ManetteMappingInputType *input_type)
{
- g_return_val_if_fail (start != NULL, FALSE);
- g_return_val_if_fail (end != NULL, FALSE);
- g_return_val_if_fail (input_type != NULL, FALSE);
+ manette_ensure_is_parseable (start);
+ manette_ensure_is_parseable (end);
+ manette_ensure_is_parseable (input_type);
switch (*start) {
case 'a':
@@ -149,9 +170,9 @@ parse_mapping_invert (gchar *start,
gchar **end,
gboolean *invert)
{
- g_return_val_if_fail (start != NULL, FALSE);
- g_return_val_if_fail (end != NULL, FALSE);
- g_return_val_if_fail (invert != NULL, FALSE);
+ manette_ensure_is_parseable (start);
+ manette_ensure_is_parseable (end);
+ manette_ensure_is_parseable (invert);
switch (*start) {
case '~':
@@ -171,9 +192,9 @@ parse_mapping_range (gchar *start,
gchar **end,
ManetteMappingRange *range)
{
- g_return_val_if_fail (start != NULL, FALSE);
- g_return_val_if_fail (end != NULL, FALSE);
- g_return_val_if_fail (range != NULL, FALSE);
+ manette_ensure_is_parseable (start);
+ manette_ensure_is_parseable (end);
+ manette_ensure_is_parseable (range);
switch (*start) {
case '+':
@@ -205,11 +226,11 @@ parse_mapping_hat (gchar *start,
guint16 hat_position_2pow;
guint16 hat_position = 0;
- g_return_val_if_fail (start != NULL, FALSE);
- g_return_val_if_fail (end != NULL, FALSE);
- g_return_val_if_fail (index != NULL, FALSE);
- g_return_val_if_fail (range != NULL, FALSE);
- g_return_val_if_fail (invert != NULL, FALSE);
+ manette_ensure_is_parseable (start);
+ manette_ensure_is_parseable (end);
+ manette_ensure_is_parseable (index);
+ manette_ensure_is_parseable (range);
+ manette_ensure_is_parseable (invert);
if (!try_str_to_guint16 (start, end, &hat_index))
return FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]