@@ -36,6 +36,11 @@ const char * ggml_backend_buft_name(ggml_backend_buffer_type_t buft) {
3636}
3737
3838ggml_backend_buffer_t ggml_backend_buft_alloc_buffer (ggml_backend_buffer_type_t buft, size_t size) {
39+ if (buft == NULL ) {
40+ // Fall back to CPU buffer type
41+ return ggml_backend_buft_alloc_buffer (ggml_backend_cpu_buffer_type (), size);
42+ }
43+
3944 if (size == 0 ) {
4045 // return a dummy buffer for zero-sized allocations
4146 return ggml_backend_buffer_init (buft, {}, NULL , 0 );
@@ -45,11 +50,20 @@ ggml_backend_buffer_t ggml_backend_buft_alloc_buffer(ggml_backend_buffer_type_t
4550}
4651
4752size_t ggml_backend_buft_get_alignment (ggml_backend_buffer_type_t buft) {
53+ if (buft == NULL ) {
54+ // Return a safe default alignment or use CPU buffer type's alignment
55+ return ggml_backend_buft_get_alignment (ggml_backend_cpu_buffer_type ());
56+ }
4857 return buft->iface .get_alignment (buft);
4958}
5059
5160size_t ggml_backend_buft_get_max_size (ggml_backend_buffer_type_t buft) {
5261 // get_max_size is optional, defaults to SIZE_MAX
62+ if (buft == NULL ) {
63+ // Return a safe default (CPU buffer type's max size)
64+ return ggml_backend_buft_get_max_size (ggml_backend_cpu_buffer_type ());
65+ }
66+
5367 if (buft->iface .get_max_size ) {
5468 return buft->iface .get_max_size (buft);
5569 }
@@ -58,6 +72,11 @@ size_t ggml_backend_buft_get_max_size(ggml_backend_buffer_type_t buft) {
5872
5973size_t ggml_backend_buft_get_alloc_size (ggml_backend_buffer_type_t buft, struct ggml_tensor * tensor) {
6074 // get_alloc_size is optional, defaults to ggml_nbytes
75+ if (buft == NULL ) {
76+ // Return ggml_nbytes as fallback
77+ return ggml_nbytes (tensor);
78+ }
79+
6180 if (buft->iface .get_alloc_size ) {
6281 size_t size = buft->iface .get_alloc_size (buft, tensor);
6382 assert (size >= ggml_nbytes (tensor));
@@ -67,13 +86,20 @@ size_t ggml_backend_buft_get_alloc_size(ggml_backend_buffer_type_t buft, struct
6786}
6887
6988bool ggml_backend_buft_is_host (ggml_backend_buffer_type_t buft) {
89+ if (buft == NULL ) {
90+ return true ; // CPU is host, so assume true for NULL
91+ }
92+
7093 if (buft->iface .is_host ) {
7194 return buft->iface .is_host (buft);
7295 }
7396 return false ;
7497}
7598
7699ggml_backend_dev_t ggml_backend_buft_get_device (ggml_backend_buffer_type_t buft) {
100+ if (buft == NULL ) {
101+ return NULL ;
102+ }
77103 return buft->device ;
78104}
79105
0 commit comments