@@ -26,6 +26,7 @@ enum handcrafted_file_type {
2626 HANDCRAFTED_HEADER_EMPTY = 800 ,
2727
2828 HANDCRAFTED_KV_BAD_KEY_SIZE = 10 + offset_has_kv,
29+ HANDCRAFTED_KV_EMPTY_KEY = 15 + offset_has_kv,
2930 HANDCRAFTED_KV_BAD_TYPE = 20 + offset_has_kv,
3031 // HANDCRAFTED_KV_BAD_VALUE_SIZE = 30 + offset_has_kv, // removed because it can result in allocations > 1 TB (default sanitizer limit)
3132 HANDCRAFTED_KV_DUPLICATE_KEY = 40 + offset_has_kv,
@@ -64,6 +65,7 @@ static std::string handcrafted_file_type_name(const enum handcrafted_file_type h
6465 case HANDCRAFTED_HEADER_EMPTY : return " HEADER_EMPTY" ;
6566
6667 case HANDCRAFTED_KV_BAD_KEY_SIZE : return " KV_BAD_KEY_SIZE" ;
68+ case HANDCRAFTED_KV_EMPTY_KEY : return " KV_EMPTY_KEY" ;
6769 case HANDCRAFTED_KV_BAD_TYPE : return " KV_BAD_TYPE" ;
6870 case HANDCRAFTED_KV_DUPLICATE_KEY : return " KV_DUPLICATE_KEY" ;
6971 case HANDCRAFTED_KV_BAD_ALIGN : return " KV_BAD_ALIGN" ;
@@ -284,7 +286,9 @@ static FILE * get_handcrafted_file(const unsigned int seed, const enum handcraft
284286 const enum gguf_type type = gguf_type (hft == HANDCRAFTED_KV_BAD_TYPE ? GGUF_TYPE_COUNT : kv_types[i].first );
285287 const enum gguf_type type_arr = gguf_type (hft == HANDCRAFTED_KV_BAD_TYPE ? GGUF_TYPE_COUNT : kv_types[i].second );
286288
287- const std::string key = " my_key_" + std::to_string ((hft == HANDCRAFTED_KV_DUPLICATE_KEY ? i/2 : i));
289+ const std::string key = hft == HANDCRAFTED_KV_EMPTY_KEY
290+ ? " "
291+ : " my_key_" + std::to_string ((hft == HANDCRAFTED_KV_DUPLICATE_KEY ? i/2 : i));
288292
289293 if (hft == HANDCRAFTED_KV_BAD_KEY_SIZE ) {
290294 const uint64_t n = -1 ;
@@ -732,6 +736,7 @@ static std::pair<int, int> test_handcrafted_file(const unsigned int seed) {
732736 HANDCRAFTED_HEADER_EMPTY ,
733737
734738 HANDCRAFTED_KV_BAD_KEY_SIZE ,
739+ HANDCRAFTED_KV_EMPTY_KEY ,
735740 HANDCRAFTED_KV_BAD_TYPE ,
736741 HANDCRAFTED_KV_DUPLICATE_KEY ,
737742 HANDCRAFTED_KV_BAD_ALIGN ,
0 commit comments