[Lldb-commits] [lldb] r361546 - [lldb] Make sure RegularExpression constructors always initialize member variables

Jorge Gorbe Moya via lldb-commits lldb-commits at lists.llvm.org
Thu May 23 13:11:18 PDT 2019


Author: jgorbe
Date: Thu May 23 13:11:17 2019
New Revision: 361546

URL: http://llvm.org/viewvc/llvm-project?rev=361546&view=rev
Log:
[lldb] Make sure RegularExpression constructors always initialize member variables

The copy constructor of RegularExpression doesn't initialize m_comp_err. This causes an use-of-initialized-value error when a RegularExpression is copied: the copy constructor calls Compile, which calls Free to free the existing regex if needed, which in turn reads m_comp_err to check if there's any regex to be freed.

This change calls the default constructor from the other constructors to make sure members are always initialized with sensible values. This also avoids duplicating init logic, like the RegularExpression(llvm:StringRef) constructor does, which is error prone.

Differential Revision: https://reviews.llvm.org/D62334

Modified:
    lldb/trunk/source/Utility/RegularExpression.cpp

Modified: lldb/trunk/source/Utility/RegularExpression.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/RegularExpression.cpp?rev=361546&r1=361545&r2=361546&view=diff
==============================================================================
--- lldb/trunk/source/Utility/RegularExpression.cpp (original)
+++ lldb/trunk/source/Utility/RegularExpression.cpp Thu May 23 13:11:17 2019
@@ -29,13 +29,12 @@ RegularExpression::RegularExpression() :
 // Constructor that compiles "re" using "flags" and stores the resulting
 // compiled regular expression into this object.
 RegularExpression::RegularExpression(llvm::StringRef str)
-    : m_re(), m_comp_err(1), m_preg() {
-  memset(&m_preg, 0, sizeof(m_preg));
+    : RegularExpression() {
   Compile(str);
 }
 
-RegularExpression::RegularExpression(const RegularExpression &rhs) {
-  memset(&m_preg, 0, sizeof(m_preg));
+RegularExpression::RegularExpression(const RegularExpression &rhs)
+    : RegularExpression() {
   Compile(rhs.GetText());
 }
 




More information about the lldb-commits mailing list