From: Rico Tzschichholz Date: Tue, 22 Oct 2019 08:30:53 +0000 (+0200) Subject: glib-2.0: Check errno for EINVAL and ERANGE in *.try_parse() X-Git-Tag: 0.47.1~46 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=b540e4e6c85b4003208283e525ef806d7e75cb6c;p=thirdparty%2Fvala.git glib-2.0: Check errno for EINVAL and ERANGE in *.try_parse() --- diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi index b6ed7a366..113dd98d0 100644 --- a/vapi/glib-2.0.vapi +++ b/vapi/glib-2.0.vapi @@ -163,7 +163,7 @@ public struct int { } if (int.MIN <= long_result <= int.MAX) { result = (int) long_result; - return true; + return errno != ERANGE && errno != EINVAL; } else { result = int.MAX; return false; @@ -223,7 +223,7 @@ public struct uint { } if (uint.MIN <= ulong_result <= uint.MAX) { result = (uint) ulong_result; - return true; + return errno != ERANGE && errno != EINVAL; } else { result = uint.MAX; return false; @@ -319,7 +319,7 @@ public struct long { result = strtol (str, out endptr, (int) _base); if (endptr == (char*) str + str.length) { unparsed = ""; - return true; + return errno != ERANGE && errno != EINVAL; } else { unparsed = (string) endptr; return false; @@ -369,7 +369,7 @@ public struct ulong { result = strtoul (str, out endptr, (int) _base); if (endptr == (char*) str + str.length) { unparsed = ""; - return true; + return errno != ERANGE && errno != EINVAL; } else { unparsed = (string) endptr; return false; @@ -773,7 +773,7 @@ public struct int64 { result = ascii_strtoll (str, out endptr, _base); if (endptr == (char*) str + str.length) { unparsed = ""; - return true; + return errno != ERANGE && errno != EINVAL; } else { unparsed = (string) endptr; return false; @@ -832,7 +832,7 @@ public struct uint64 { result = ascii_strtoull (str, out endptr, _base); if (endptr == (char*) str + str.length) { unparsed = ""; - return true; + return errno != ERANGE && errno != EINVAL; } else { unparsed = (string) endptr; return false; @@ -913,7 +913,7 @@ public struct float { result = strtof (str, out endptr); if (endptr == (char*) str + str.length) { unparsed = ""; - return true; + return errno != ERANGE; } else { unparsed = (string) endptr; return false; @@ -994,7 +994,7 @@ public struct double { result = ascii_strtod (str, out endptr); if (endptr == (char*) str + str.length) { unparsed = ""; - return true; + return errno != ERANGE; } else { unparsed = (string) endptr; return false; @@ -1610,6 +1610,14 @@ public class string16 { } } +// Required for proper error checking in *.try_parse() +[CCode (cheader_filename = "errno.h")] +private int errno; +[CCode (cheader_filename = "errno.h")] +private const int ERANGE; +[CCode (cheader_filename = "errno.h")] +private const int EINVAL; + [CCode (cprefix = "G", lower_case_cprefix = "g_", cheader_filename = "glib.h", gir_namespace = "GLib", gir_version = "2.0")] namespace GLib { [PointerType]