diff options
author | Eric Fiselier <eric@efcs.ca> | 2018-05-18 20:39:57 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2018-05-18 20:39:57 +0000 |
commit | c6d4c3a92bbccacaf447a92dc03c4db4fc292124 (patch) | |
tree | ecf75ff273a374e439ae829213f9c922519eed0a /libcxxabi/src | |
parent | e43eb9282d7bc7b00a43c9477dc5b5205560bdfd (diff) |
private_typeinfo: propagate static flags in vmi search_above_dst method
Patch by Ryan Prichard
Propagate the found_our_static_ptr and found_any_static_type flags from
__vmi_class_type_info::search_above_dst to its caller.
Fixes PR33425 and PR33487
Reviewed as https://reviews.llvm.org/D36446
Diffstat (limited to 'libcxxabi/src')
-rw-r--r-- | libcxxabi/src/private_typeinfo.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libcxxabi/src/private_typeinfo.cpp b/libcxxabi/src/private_typeinfo.cpp index ef9466ef610..6da3c779c3b 100644 --- a/libcxxabi/src/private_typeinfo.cpp +++ b/libcxxabi/src/private_typeinfo.cpp @@ -1181,6 +1181,8 @@ __vmi_class_type_info::search_above_dst(__dynamic_cast_info* info, info->found_our_static_ptr = false; info->found_any_static_type = false; p->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp); + found_our_static_ptr |= info->found_our_static_ptr; + found_any_static_type |= info->found_any_static_type; if (++p < e) { do @@ -1210,6 +1212,8 @@ __vmi_class_type_info::search_above_dst(__dynamic_cast_info* info, info->found_our_static_ptr = false; info->found_any_static_type = false; p->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp); + found_our_static_ptr |= info->found_our_static_ptr; + found_any_static_type |= info->found_any_static_type; } while (++p < e); } // Restore flags |