@@ -1219,6 +1219,22 @@ read_tmpl(mrb_state *mrb, struct tmpl *tmpl, enum pack_dir *dirp, enum pack_type
12191219mrb_raisef(mrb, E_RUNTIME_ERROR, "mruby-pack does not support sizeof(int) == %d", (int)sizeof(int));
12201220 }
12211221break;
1222+case 'J':
1223+switch (sizeof(intptr_t)) {
1224+case 4: t = 'L'; goto alias;
1225+case 8: t = 'Q'; goto alias;
1226+default:
1227+mrb_raisef(mrb, E_RUNTIME_ERROR, "mruby-pack does not support sizeof(uintptr_t) == %d", (int)sizeof(uintptr_t));
1228+ }
1229+break;
1230+case 'j':
1231+switch (sizeof(intptr_t)) {
1232+case 4: t = 'l'; goto alias;
1233+case 8: t = 'q'; goto alias;
1234+default:
1235+mrb_raisef(mrb, E_RUNTIME_ERROR, "mruby-pack does not support sizeof(intptr_t) == %d", (int)sizeof(intptr_t));
1236+ }
1237+break;
12221238case 'L':
12231239dir = PACK_DIR_LONG;
12241240type = PACK_TYPE_INTEGER;