Index: uspace/lib/cpp/include/internal/locale/num_get.hpp
===================================================================
--- uspace/lib/cpp/include/internal/locale/num_get.hpp	(revision 8d0953ffff2941f57c23c65269562578379a68d7)
+++ uspace/lib/cpp/include/internal/locale/num_get.hpp	(revision c5b2b0580aa158f7e3057d30a7d4f4c6d9a6d020)
@@ -36,4 +36,8 @@
 #include <limits>
 
+extern "C" {
+#include <errno.h>
+}
+
 namespace std
 {
@@ -281,5 +285,5 @@
             template<class BaseType, class T>
             iter_type get_integral_(iter_type in, iter_type end, ios_base& base,
-                                    ios_base::iostate err, T& v) const
+                                    ios_base::iostate& err, T& v) const
             {
                 BaseType res{};
@@ -295,10 +299,16 @@
                 if (size > 0)
                 {
+                    int ret{};
                     if constexpr (is_signed<BaseType>::value)
-                        str_int64_t(base.buffer_, nullptr, num_base, false, &res);
-                    else
-                        str_uint64_t(base.buffer_, nullptr, num_base, false, &res);
-
-                    if (res > static_cast<BaseType>(numeric_limits<T>::max()))
+                        ret = str_int64_t(base.buffer_, nullptr, num_base, false, &res);
+                    else
+                        ret = str_uint64_t(base.buffer_, nullptr, num_base, false, &res);
+
+                    if (ret != EOK)
+                    {
+                        err |= ios_base::failbit;
+                        v = 0;
+                    }
+                    else if (res > static_cast<BaseType>(numeric_limits<T>::max()))
                     {
                         err |= ios_base::failbit;
