brendan%mozilla.org 26c06ddc42 - String.prototype.match, .search, and .replace all use match_or_replace as
a common subroutine, but only replace might need to dereference the regexp
  created from a non-regexp-type argument, which is converted to string and
  compiled into a regexp data struct unowned by any rooted object.  This case
  was broken: a dangling GlobData.regexp pointer could be dereferenced in the
  "lambda replace" code under str_replace, in find_replen, *after* the call
  to match_or_replace had destroyed the regexp and returned to str_replace.
  Bug 167658 reported the symptoms.
- Consolidate GlobData members into a flags word, avoiding yet another ad hoc
  paramter to m_or_r (forceFlat).
- Use a local root in str_match to avoid adding and removing a global root.
2002-09-23 18:33:17 +00:00
..