diff --git a/src/model_io/safetensors_io.cpp b/src/model_io/safetensors_io.cpp index d8b8dc510..c9416433f 100644 --- a/src/model_io/safetensors_io.cpp +++ b/src/model_io/safetensors_io.cpp @@ -308,8 +308,18 @@ bool read_safetensors_file(const std::string& file_path, return false; } + if (elements == 0) { + if (begin != end) { + set_error(error, "size mismatch for tensor '" + name + "' (" + dtype + ")"); + return false; + } + // Avoid creating zero-byte storage for valid empty tensors. + continue; + } + if (n_dims == 5) { n_dims = 4; + // partial product; full product already overflow-checked above ne[0] = ne[0] * ne[1]; ne[1] = ne[2]; ne[2] = ne[3];