summaryrefslogtreecommitdiffstats
path: root/src/sp-filter.cpp
diff options
context:
space:
mode:
authorNiko Kiirala <niko@kiirala.com>2008-02-05 07:15:06 +0000
committerkiirala <kiirala@users.sourceforge.net>2008-02-05 07:15:06 +0000
commit1e45287ec1ab8a9b4da0a14446b9c85a23af2efc (patch)
tree8f43e9c0fcff964208e40cf6901a9fd4ad87012f /src/sp-filter.cpp
parentlpe-skeletal-stroke: make spacing and normal_offset parameters do something... (diff)
downloadinkscape-1e45287ec1ab8a9b4da0a14446b9c85a23af2efc.tar.gz
inkscape-1e45287ec1ab8a9b4da0a14446b9c85a23af2efc.zip
Patch by John Faith: fixed crash resulting from inproperly initialized std::map
(bzr r4659)
Diffstat (limited to 'src/sp-filter.cpp')
-rw-r--r--src/sp-filter.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp
index c74a9ffdb..150033895 100644
--- a/src/sp-filter.cpp
+++ b/src/sp-filter.cpp
@@ -112,7 +112,8 @@ sp_filter_init(SPFilter *filter)
filter->_renderer = NULL;
- filter->_image_name = map<gchar *, int, ltstr>();
+ filter->_image_name = new std::map<gchar *, int, ltstr>;
+ filter->_image_name->clear();
filter->filterRes = NumberOptNumber();
@@ -169,6 +170,7 @@ sp_filter_release(SPObject *object)
}
filter->modified_connection.~connection();
+ delete filter->_image_name;
if (((SPObjectClass *) filter_parent_class)->release)
((SPObjectClass *) filter_parent_class)->release(object);
@@ -456,9 +458,9 @@ int sp_filter_primitive_count(SPFilter *filter) {
int sp_filter_get_image_name(SPFilter *filter, gchar const *name) {
gchar *name_copy = strdup(name);
- map<gchar *, int, ltstr>::iterator result = filter->_image_name.find(name_copy);
+ map<gchar *, int, ltstr>::iterator result = filter->_image_name->find(name_copy);
free(name_copy);
- if (result == filter->_image_name.end()) return -1;
+ if (result == filter->_image_name->end()) return -1;
else return (*result).second;
}
@@ -466,7 +468,8 @@ int sp_filter_set_image_name(SPFilter *filter, gchar const *name) {
int value = filter->_image_number_next;
filter->_image_number_next++;
gchar *name_copy = strdup(name);
- pair<map<gchar*,int,ltstr>::iterator,bool> ret = filter->_image_name.insert(pair<gchar*,int>(name_copy, value));
+ pair<gchar*,int> new_pair(name_copy, value);
+ pair<map<gchar*,int,ltstr>::iterator,bool> ret = filter->_image_name->insert(new_pair);
if (ret.second == false) {
return (*ret.first).second;
}