if ((get_size = fdb_kv_get_blob(db, key, fdb_blob_make(&blob, value, FDB_STR_KV_VALUE_MAX_SIZE))) > 0) {
/* the return value must be string */
if (fdb_is_str((uint8_t *)value, get_size)) {
value[get_size] = '\0';
return value;
} else if (blob.saved.len > FDB_STR_KV_VALUE_MAX_SIZE) {
FDB_INFO("Warning: The default string KV value buffer length (%" PRIdLEAST16 ") is too less (%" PRIu32 ").\n", FDB_STR_KV_VALUE_MAX_SIZE,
(uint32_t)blob.saved.len);
} else {
FDB_INFO("Warning: The KV value isn't string. Could not be returned\n");
return NULL;
}
}
return NULL;
char fdb_kv_get(fdb_kvdb_t db, const char key) { static char value[FDB_STR_KV_VALUE_MAX_SIZE + 1]; size_t get_size; struct fdb_blob blob;
} 以上函数,返回的Value 可能不安全的,多线程下,value可能不是想要的值