@@ -1624,17 +1624,18 @@ static size_t lpbE_enum(lpb_Env *e, const pb_Field *f, int *pexist, int idx) {
16241624 lpb_name (e -> LS , lpb_toslice (L , idx )))) != NULL ) {
16251625 if (pexist ) * pexist = (ev -> number != 0 );
16261626 return lpb_checkmem (L , pb_addvarint32 (b , ev -> number ));
1627- } else if (type != LUA_TSTRING ) {
1628- argcheck (L , 0 , 2 , "number/string expected at field '%s', got %s" ,
1629- (const char * )f -> name , luaL_typename (L , idx ));
1630- return 0 ;
1631- } else {
1627+ } else if (type == LUA_TSTRING ) {
16321628 uint64_t v = lpb_tointegerx (L , idx , & type );
16331629 if (pexist ) * pexist = (v != 0 );
16341630 if (!type )
16351631 argcheck (L , 0 , 2 , "can not encode unknown enum '%s' at field '%s'" ,
16361632 lua_tostring (L , -1 ), (const char * )f -> name );
16371633 return lpb_checkmem (L , pb_addvarint64 (b , v ));
1634+ } else {
1635+ argcheck (L , 0 , 2 , "number/string expected at field '%s', got %s" ,
1636+ (const char * )f -> name , luaL_typename (L , idx ));
1637+ if (pexist ) * pexist = 0 ;
1638+ return 0 ;
16381639 }
16391640}
16401641
0 commit comments