}
if (int.MIN <= long_result <= int.MAX) {
result = (int) long_result;
- return true;
+ return errno != ERANGE && errno != EINVAL;
} else {
result = int.MAX;
return false;
}
if (uint.MIN <= ulong_result <= uint.MAX) {
result = (uint) ulong_result;
- return true;
+ return errno != ERANGE && errno != EINVAL;
} else {
result = uint.MAX;
return false;
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;
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;
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;
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;
result = strtof (str, out endptr);
if (endptr == (char*) str + str.length) {
unparsed = "";
- return true;
+ return errno != ERANGE;
} else {
unparsed = (string) endptr;
return false;
result = ascii_strtod (str, out endptr);
if (endptr == (char*) str + str.length) {
unparsed = "";
- return true;
+ return errno != ERANGE;
} else {
unparsed = (string) endptr;
return false;
}
}
+// 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]