Fixed "linked" strings incorrectly marked as "owned" (fixes #1318)

This commit is contained in:
Benoit Blanchon
2020-07-24 22:25:56 +02:00
parent 6dc36125c2
commit 4df29fbac1
9 changed files with 75 additions and 74 deletions

View File

@@ -99,62 +99,18 @@ inline bool variantSetOwnedRaw(VariantData *var, SerializedValue<T> value,
return var != 0 && var->setOwnedRaw(value, pool);
}
inline bool variantSetLinkedString(VariantData *var, const char *value) {
if (!var)
return false;
var->setLinkedString(value);
return true;
}
inline void variantSetNull(VariantData *var) {
if (!var)
return;
var->setNull();
}
inline bool variantSetOwnedString(VariantData *var, char *value) {
if (!var)
return false;
var->setOwnedString(value);
return true;
}
template <typename TAdaptedString>
inline bool variantSetOwnedString(VariantData *var, TAdaptedString value,
MemoryPool *pool) {
return var != 0 && var->setOwnedString(value, pool);
}
template <typename TAdaptedString>
inline bool variantSetString(VariantData *var, TAdaptedString value,
MemoryPool *pool,
storage_policies::decide_at_runtime) {
if (value.isStatic())
return variantSetString(var, value, pool,
storage_policies::store_by_address());
else
return variantSetString(var, value, pool,
storage_policies::store_by_copy());
}
template <typename TAdaptedString>
inline bool variantSetString(VariantData *var, TAdaptedString value,
MemoryPool *pool) {
return variantSetString(var, value, pool,
typename TAdaptedString::storage_policy());
}
template <typename TAdaptedString>
inline bool variantSetString(VariantData *var, TAdaptedString value,
MemoryPool *, storage_policies::store_by_address) {
return variantSetLinkedString(var, value.data());
}
template <typename TAdaptedString>
inline bool variantSetString(VariantData *var, TAdaptedString value,
MemoryPool *pool,
storage_policies::store_by_copy) {
return variantSetOwnedString(var, value, pool);
if (!var)
return false;
return var->setString(value, pool);
}
template <typename T>