diff options
| author | Denis Declara <declara91@gmail.com> | 2012-05-05 13:32:42 +0000 |
|---|---|---|
| committer | Denis Declara <declara91@gmail.com> | 2012-05-05 13:32:42 +0000 |
| commit | aeb9c1bde66de096910757abb17dedb94ad74207 (patch) | |
| tree | c0adf97685b0fa8af1553b14d20601f280492762 /src/ui/clipboard.cpp | |
| parent | Fixed some math, so that the objects now line up correctly (diff) | |
| parent | Adding checks to prevent null pointer dereferences (diff) | |
| download | inkscape-aeb9c1bde66de096910757abb17dedb94ad74207.tar.gz inkscape-aeb9c1bde66de096910757abb17dedb94ad74207.zip | |
Trunk merge
(bzr r11073.1.29)
Diffstat (limited to 'src/ui/clipboard.cpp')
| -rw-r--r-- | src/ui/clipboard.cpp | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp index b972997e2..8f0652a78 100644 --- a/src/ui/clipboard.cpp +++ b/src/ui/clipboard.cpp @@ -698,20 +698,25 @@ void ClipboardManagerImpl::_copyUsedDefs(SPItem *item) _copyTextPath(SP_TEXTPATH(item->firstChild())); } // Copy clipping objects - if (item->clip_ref->getObject()) { - _copyNode(item->clip_ref->getObject()->getRepr(), _doc, _defs); + if (item->clip_ref){ + if (item->clip_ref->getObject()) { + _copyNode(item->clip_ref->getObject()->getRepr(), _doc, _defs); + } } // Copy mask objects - if (item->mask_ref->getObject()) { - SPObject *mask = item->mask_ref->getObject(); - _copyNode(mask->getRepr(), _doc, _defs); - // recurse into the mask for its gradients etc. - for (SPObject *o = mask->children ; o != NULL ; o = o->next) { - if (SP_IS_ITEM(o)) { - _copyUsedDefs(SP_ITEM(o)); + if (item->mask_ref){ + if (item->mask_ref->getObject()) { + SPObject *mask = item->mask_ref->getObject(); + _copyNode(mask->getRepr(), _doc, _defs); + // recurse into the mask for its gradients etc. + for (SPObject *o = mask->children ; o != NULL ; o = o->next) { + if (SP_IS_ITEM(o)) { + _copyUsedDefs(SP_ITEM(o)); + } } } } + // Copy filters if (style->getFilter()) { SPObject *filter = style->getFilter(); @@ -737,7 +742,12 @@ void ClipboardManagerImpl::_copyGradient(SPGradient *gradient) while (gradient) { // climb up the refs, copying each one in the chain _copyNode(gradient->getRepr(), _doc, _defs); - gradient = gradient->ref->getObject(); + if (gradient->ref){ + gradient = gradient->ref->getObject(); + } + else { + gradient = NULL; + } } } @@ -758,7 +768,12 @@ void ClipboardManagerImpl::_copyPattern(SPPattern *pattern) } _copyUsedDefs(SP_ITEM(child)); } - pattern = pattern->ref->getObject(); + if (pattern->ref){ + pattern = pattern->ref->getObject(); + } + else{ + pattern = NULL; + } } } |
