diff --git a/src/header/stdlib/mod.rs b/src/header/stdlib/mod.rs
index 0644dfb8a080cf8bc055969409e0239719938000..6925a2a93bec64a7de380e90f9b3cbb40f3b76dd 100644
--- a/src/header/stdlib/mod.rs
+++ b/src/header/stdlib/mod.rs
@@ -756,7 +756,7 @@ pub unsafe fn convert_hex(s: *const c_char) -> Option<(c_ulong, isize, bool)> {
     {
         convert_integer(s.offset(2), 16).map(|(val, idx, overflow)| (val, idx + 2, overflow))
     } else {
-        None
+        convert_integer(s, 16).map(|(val, idx, overflow)| (val, idx, overflow))
     }
 }
 
diff --git a/tests/expected/stdlib/strtol.stdout b/tests/expected/stdlib/strtol.stdout
index 6f53efcf016a5266713fea60f59ee08b7ec08180..5ac06ec251f9a3d2ab7b5cb1d3d0cb9a23eca02b 100644
--- a/tests/expected/stdlib/strtol.stdout
+++ b/tests/expected/stdlib/strtol.stdout
@@ -6,6 +6,7 @@
 1234567890
 38acf
 abcdef12
+cafebeef
 731
 731
 0
diff --git a/tests/stdlib/strtol.c b/tests/stdlib/strtol.c
index 7d09883c64bb0daaa992ccbb3a7bab5eaec7e13b..c088e144b9bbd49a011982a8c90c7be31a3d2ada 100644
--- a/tests/stdlib/strtol.c
+++ b/tests/stdlib/strtol.c
@@ -13,6 +13,7 @@ int main(int argc, char* argv[]) {
 
     printf("%lx\n", strtol("  0x38Acfg", NULL, 0));
     printf("%lx\n", strtol("0Xabcdef12", NULL, 16));
+    printf("%lx\n", strtol("cafebeef", NULL, 16));
 
     printf("%lo\n", strtol("  073189", NULL, 0));
     printf("%lo\n", strtol("     073189", NULL, 8));