Fix human-readable vmajor when out of base38 range
diff --git a/script/print-json-token-debug-format.c b/script/print-json-token-debug-format.c
index e8a81bc..a2a5277 100644
--- a/script/print-json-token-debug-format.c
+++ b/script/print-json-token-debug-format.c
@@ -295,18 +295,32 @@
                  (uint32_t)(pos), len, con);
 
           if (vmajor > 0) {
+            char vmajor_name[5];
+            vmajor_name[0] = '*';
+            vmajor_name[1] = '*';
+            vmajor_name[2] = '*';
+            vmajor_name[3] = '*';
+            vmajor_name[4] = '\x00';
             uint32_t m = vmajor;
-            uint32_t m0 = m / (38 * 38 * 38);
-            m -= m0 * (38 * 38 * 38);
-            uint32_t m1 = m / (38 * 38);
-            m -= m1 * (38 * 38);
-            uint32_t m2 = m / (38);
-            m -= m2 * (38);
-            uint32_t m3 = m;
+            if (m < 38 * 38 * 38 * 38) {
+              uint32_t m0 = m / (38 * 38 * 38);
+              m -= m0 * (38 * 38 * 38);
+              vmajor_name[0] = g_base38_decode[m0];
 
-            printf("vmajor=0x%06" PRIX32 ":%c%c%c%c  vminor=0x%06" PRIX32 "\n",
-                   vmajor, g_base38_decode[m0], g_base38_decode[m1],
-                   g_base38_decode[m2], g_base38_decode[m3], vminor);
+              uint32_t m1 = m / (38 * 38);
+              m -= m1 * (38 * 38);
+              vmajor_name[1] = g_base38_decode[m1];
+
+              uint32_t m2 = m / (38);
+              m -= m2 * (38);
+              vmajor_name[2] = g_base38_decode[m2];
+
+              uint32_t m3 = m;
+              vmajor_name[3] = g_base38_decode[m3];
+            }
+
+            printf("vmajor=0x%06" PRIX32 ":%s  vminor=0x%06" PRIX32 "\n",
+                   vmajor, vmajor_name, vminor);
           } else if (vmajor == 0) {
             printf("vbc=%s.  vbd=0x%06" PRIX32 "\n", g_vbc_names[vbc & 15],
                    vbd);