zturner added inline comments.
================
Comment at: source/Plugins/SymbolFile/PDB/SymbolFilePDB.cpp:392-399
+ bool is_regex = false;
+ if (name_str.find_first_of("[]?*.-+\\") != std::string::npos) {
+ // Trying to compile an invalid regex could throw an exception.
+ // Only search by regex when it's valid.
+ lldb_private::RegularExpression name_regex(name_str);
+ is_regex = name_regex.IsValid();
+ }
----------------
I can see two possible problems here.
1. Now if it is a valid regex, it's going to compile it twice, hurting
performance (not sure by how much, it could be negligible)
2. Whether or not it's valid is determined by asking LLDB's regex engine, but
it's then compiled with C++ STL's engine. It's possible they won't agree on
whether or not a regex is valid.
You mentioned that it throws an exception on an invalid regex. What actually
happens though? Because we compile with exception support disabled. Does it
terminate the program?
At a minimum, the validity check and the find function should agree on the
regex engine. If the only way to make that work is to change from `std::regex`
to `lldb_private::RegularExpression` as the matching engine, then I guess we
have to do that.
Repository:
rL LLVM
https://reviews.llvm.org/D41086
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits