Указатели — это весело. Тебе ещё предстоит в них вкурить нормально, весёлые времена null pointer exception'ов и утечек памяти.
static void push_emenu_t(lua_State *L, emenu_t *menu) {
emenu_t **menu_ud = lua_newuserdata(L, sizeof(menu));
*menu_ud = menu;
luaL_setmetatable(L, "emenu_t");
}
Вот так написал кстати. Вроде работает