summaryrefslogtreecommitdiffstats
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2012-01-21 01:08:32 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2012-01-21 01:10:23 -0500
commitde8d1f922acca8e0df5ecb016d27126124e2c3d1 (patch)
tree8788361136082e537e274b8fccce393e28335e6a /sc
parentfdo#44831: Named range should overwrite existing name. (diff)
downloadcore-de8d1f922acca8e0df5ecb016d27126124e2c3d1.tar.gz
core-de8d1f922acca8e0df5ecb016d27126124e2c3d1.zip
Oops I shouldn't have erased names directly.
We always need to remove the index map when removing a name.
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/rangenam.hxx1
-rw-r--r--sc/source/core/tool/rangenam.cxx9
2 files changed, 8 insertions, 2 deletions
diff --git a/sc/inc/rangenam.hxx b/sc/inc/rangenam.hxx
index ce0e2082e999..53e9ec8f0a8a 100644
--- a/sc/inc/rangenam.hxx
+++ b/sc/inc/rangenam.hxx
@@ -230,6 +230,7 @@ public:
SC_DLLPUBLIC bool insert(ScRangeData* p);
void erase(const ScRangeData& r);
+ void erase(const rtl::OUString& rName);
/**
* Erase by iterator position. Note that this method doesn't check for
diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx
index da92c7ca3dea..3de3b2298169 100644
--- a/sc/source/core/tool/rangenam.cxx
+++ b/sc/source/core/tool/rangenam.cxx
@@ -894,7 +894,7 @@ bool ScRangeName::insert(ScRangeData* p)
}
rtl::OUString aName(p->GetUpperName());
- maData.erase(aName); // ptr_map won't insert it if a duplicate name exists.
+ erase(aName); // ptr_map won't insert it if a duplicate name exists.
pair<DataType::iterator, bool> r = maData.insert(aName, p);
if (r.second)
{
@@ -909,7 +909,12 @@ bool ScRangeName::insert(ScRangeData* p)
void ScRangeName::erase(const ScRangeData& r)
{
- DataType::iterator itr = maData.find(r.GetUpperName());
+ erase(r.GetUpperName());
+}
+
+void ScRangeName::erase(const rtl::OUString& rName)
+{
+ DataType::iterator itr = maData.find(rName);
if (itr != maData.end())
erase(itr);
}