diff --git a/src_main/core/pivariant.h b/src_main/core/pivariant.h index e25aea97..2079e100 100755 --- a/src_main/core/pivariant.h +++ b/src_main/core/pivariant.h @@ -584,20 +584,20 @@ public: static PIVariant fromValue(const PIByteArray & c, const PIString & type) { PIVariant ret; + PIVariant::Type t = typeFromName(type); + if (t == pivInvalid) { #ifdef CUSTOM_PIVARIANT - ret._info = __PIVariantInfoStorage__::get()->map->value(type, 0); - if (!ret._info) { + ret._info = __PIVariantInfoStorage__::get()->map->value(type, 0); + if (ret._info) { + t = pivCustom; + } else #endif - PIVariant::Type t = typeFromName(type); - if (t == pivInvalid) { + { piCout << "Can`t initialize PIVariant from unregistered type \"" << type << "\"!"; return ret; } - ret._type = t; -#ifdef CUSTOM_PIVARIANT - } else - ret._type = pivCustom; -#endif + } + ret._type = t; ret._content = c; return ret; }