diff --git a/spm.c b/spm.c
index 878f5d813b81e6675fc6b486be352fb272216ac9..124241664bc582678797bc996794d1b426a13343 100644
--- a/spm.c
+++ b/spm.c
@@ -294,10 +294,10 @@ spmFindBase( const pastix_spm_t *spm )
 int
 spmConvert( int ofmttype, pastix_spm_t *spm )
 {
-    if ( spm->dof != 1 ) {
-        spm = spmExpand( spm );
-    }
     if ( conversionTable[spm->fmttype][ofmttype][spm->flttype] ) {
+        if ( spm->dof != 1 ) {
+            return PASTIX_ERR_NOTIMPLEMENTED;
+        }
         return conversionTable[spm->fmttype][ofmttype][spm->flttype]( spm );
     }
     else {
@@ -420,6 +420,10 @@ spmNorm( int ntype,
         ;
     }
 
+    if ( spmtmp != spm ) {
+        spmExit( spmtmp );
+        free(spmtmp);
+    }
     return norm;
 }