diff options
| author | Niko Kiirala <niko@kiirala.com> | 2008-02-05 07:15:06 +0000 |
|---|---|---|
| committer | kiirala <kiirala@users.sourceforge.net> | 2008-02-05 07:15:06 +0000 |
| commit | 1e45287ec1ab8a9b4da0a14446b9c85a23af2efc (patch) | |
| tree | 8f43e9c0fcff964208e40cf6901a9fd4ad87012f /src/sp-filter.cpp | |
| parent | lpe-skeletal-stroke: make spacing and normal_offset parameters do something... (diff) | |
| download | inkscape-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.cpp | 11 |
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; } |
