]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
glib-2.0: Check errno for EINVAL and ERANGE in *.try_parse()
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 22 Oct 2019 08:30:53 +0000 (10:30 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 22 Oct 2019 08:30:53 +0000 (10:30 +0200)
vapi/glib-2.0.vapi

index b6ed7a3668ec89f825fd28d061e668f52e0f0ded..113dd98d0adbe620446895f0cbcca661cb7acb61 100644 (file)
@@ -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]