Kaydet (Commit) 03736d67 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Fix MI RTTI (as needed by -fsanitize=vptr)

Change-Id: Idbde54c641531b34f397d07c5f929870c3a82371
üst cdb214c3
...@@ -162,10 +162,33 @@ std::type_info * RTTI::getRTTI(typelib_TypeDescription const & pTypeDescr) ...@@ -162,10 +162,33 @@ std::type_info * RTTI::getRTTI(typelib_TypeDescription const & pTypeDescr)
static_cast<__cxxabiv1::__class_type_info *>( static_cast<__cxxabiv1::__class_type_info *>(
bases[0])); bases[0]));
break; break;
case 2: default:
//TODO {
char * pad = new char[
sizeof (__cxxabiv1::__vmi_class_type_info)
+ ((itd.nBaseTypes - 1)
* sizeof (
__cxxabiv1::__base_class_type_info))];
__cxxabiv1::__vmi_class_type_info * info
= new(pad)
__cxxabiv1::__vmi_class_type_info(
strdup(rttiName),
__cxxabiv1::__vmi_class_type_info::__flags_unknown_mask);
info->__base_count = itd.nBaseTypes;
for (sal_Int32 i = 0; i != itd.nBaseTypes; ++i)
{
info->__base_info[i].__base_type
= static_cast<
__cxxabiv1::__class_type_info *>(
bases[i]);
info->__base_info[i].__offset_flags
= (__cxxabiv1::__base_class_type_info::__public_mask
| ((8 * i) << __cxxabiv1::__base_class_type_info::__offset_shift));
}
rtti = info;
break; break;
} }
}
break; break;
} }
default: default:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment