aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-08-21 18:56:38 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-08-21 18:56:38 +0200
commit15995637f9cab6a4d92a2383e2afdba2b48d5f7b (patch)
tree80fc2b252dff7f84e5361e74ba29fd998ad28bd4
parente43343d17e023e9afaeeba615ed5502c02741f8c (diff)
Make sure we don't match namespace ::foo as prefix of ::foobar
-rw-r--r--odb/parser.cxx6
1 files changed, 5 insertions, 1 deletions
diff --git a/odb/parser.cxx b/odb/parser.cxx
index ff9f6d0..275da33 100644
--- a/odb/parser.cxx
+++ b/odb/parser.cxx
@@ -951,7 +951,11 @@ emit ()
for (pfx = scope_->fq_name (); !pfx.empty (); pfx = scope_->fq_name ())
{
- if (ns.compare (0, pfx.size (), pfx) == 0)
+ size_t n (pfx.size ());
+
+ // Make sure we handle cases like ns="::foobar", pfx="::foo".
+ //
+ if (ns.compare (0, n, pfx) == 0 && (ns.size () == n || ns[n - 1] == ':'))
break;
if (trace)