]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
llama : correct platform-independent loading of BOOL metadata (#21428)
authoranchortense <redacted>
Sun, 5 Apr 2026 23:40:38 +0000 (09:40 +1000)
committerGitHub <redacted>
Sun, 5 Apr 2026 23:40:38 +0000 (01:40 +0200)
* model-loader : fix GGUF bool array conversion

* model-loader : fix remaining GGUF bool pointer uses

src/llama-impl.cpp
src/llama-model-loader.cpp
tools/mtmd/clip-impl.h

index 4c0188ee7226014883d176a354a912589c5b6ce5..b3a94b946d2866940763901a8b2cc014827799e7 100644 (file)
@@ -128,7 +128,7 @@ static std::string gguf_data_to_str(enum gguf_type type, const void * data, int
         case GGUF_TYPE_INT64:   return std::to_string(((const int64_t  *)data)[i]);
         case GGUF_TYPE_FLOAT32: return std::to_string(((const float    *)data)[i]);
         case GGUF_TYPE_FLOAT64: return std::to_string(((const double   *)data)[i]);
-        case GGUF_TYPE_BOOL:    return ((const bool *)data)[i] ? "true" : "false";
+        case GGUF_TYPE_BOOL:    return ((const int8_t *)data)[i] != 0 ? "true" : "false";
         default:                return format("unknown type %d", type);
     }
 }
index 3d549cae5b6b83559d84724f806582ca2d702685..4f821e0dc74414a80b6879a5692b3a3f5c38704f 100644 (file)
@@ -374,8 +374,9 @@ namespace GGUFMeta {
             }
         } else {
             if (arr_info.gt == GGUF_TYPE_BOOL) {
-                std::transform((const bool *)arr_info.data, (const bool *)arr_info.data + arr_info.length, result.begin(), [](bool x) {
-                    return static_cast<T>(x);
+                const int8_t * values = (const int8_t *) arr_info.data;
+                std::transform(values, values + arr_info.length, result.begin(), [](int8_t x) {
+                    return static_cast<T>(x != 0);
                 });
             } else {
                 std::copy((const T*)arr_info.data, (const T *)arr_info.data + arr_info.length, result.begin());
index 1f2f7cfaacd172dd894ecb8933ea734940a96dec..81b92841ca09a3508f94ef4bf79ee0d830ff5bad 100644 (file)
@@ -522,7 +522,7 @@ static std::string gguf_data_to_str(enum gguf_type type, const void * data, int
         case GGUF_TYPE_INT64:   return std::to_string(((const int64_t  *)data)[i]);
         case GGUF_TYPE_FLOAT32: return std::to_string(((const float    *)data)[i]);
         case GGUF_TYPE_FLOAT64: return std::to_string(((const double   *)data)[i]);
-        case GGUF_TYPE_BOOL:    return ((const bool *)data)[i] ? "true" : "false";
+        case GGUF_TYPE_BOOL:    return ((const int8_t *)data)[i] != 0 ? "true" : "false";
         default:                return string_format("unknown type %d", type);
     }
 }