diff --git a/src/extension/internal/emf-win32-inout.cpp b/src/extension/internal/emf-win32-inout.cpp
index b9d65f50cd80409f11549dc44f2dac777b70dd7b..59f538ab919a5cd109072d5e0443bba83b34ea35 100644 (file)
@@ -505,6 +505,15 @@ myEnhMetaFileProc(HDC hDC, HANDLETABLE *lpHTable, ENHMETARECORD *lpEMFR, int nOb
if (pEmr->nHandles) {
d->n_obj = pEmr->nHandles;
d->emf_obj = new EMF_OBJECT[d->n_obj];
+
+ // Init the new emf_obj list elements to null, provided the
+ // dynamic allocation succeeded.
+ if ( d->emf_obj != NULL )
+ {
+ for( unsigned int i=0; i < d->n_obj; ++i )
+ d->emf_obj[i].lpEMFR = NULL;
+ } //if
+
} else {
d->emf_obj = NULL;
}
@@ -816,7 +825,7 @@ myEnhMetaFileProc(HDC hDC, HANDLETABLE *lpHTable, ENHMETARECORD *lpEMFR, int nOb
}
}
} else {
- if (index >= 0 && index < d->n_obj) {
+ if (index >= 0 && index < (unsigned int)d->n_obj) {
switch (d->emf_obj[index].type)
{
case EMR_CREATEPEN:
delete_object(&d, i);
delete[] d.emf_obj;
}
-
+
if (d.style.stroke_dash.dash)
delete[] d.style.stroke_dash.dash;