瀏覽代碼

fix multiple notify categories

David Rose 24 年之前
父節點
當前提交
5fe06a08b0
共有 1 個文件被更改,包括 13 次插入3 次删除
  1. 13 3
      dtool/src/dconfig/notify.cxx

+ 13 - 3
dtool/src/dconfig/notify.cxx

@@ -265,9 +265,19 @@ get_category(const string &basename, NotifyCategory *parent_category) {
     }
   }
 
-  NotifyCategory *category =
-    new NotifyCategory(fullname, basename, parent_category);
-  _categories.insert(Categories::value_type(fullname, category));
+  pair<Categories::iterator, bool> result = 
+    _categories.insert(Categories::value_type(fullname, NULL));
+
+  bool inserted = result.second;
+  NotifyCategory *&category = (*result.first).second;
+
+  if (inserted) {
+    // If we just inserted a new record, then we have to create a new
+    // Category pointer.  Otherwise, there was already one created
+    // from before.
+    category = new NotifyCategory(fullname, basename, parent_category);
+  }
+
   return category;
 }