Index: /branches/eam_branches/ipp-20130904/psLib/src/imageops/psImageConvolve.c
===================================================================
--- /branches/eam_branches/ipp-20130904/psLib/src/imageops/psImageConvolve.c	(revision 36229)
+++ /branches/eam_branches/ipp-20130904/psLib/src/imageops/psImageConvolve.c	(revision 36230)
@@ -789,6 +789,8 @@
 psImageSmoothCacheData *psImageSmoothCacheAlloc (psImage *image, double sigma, double Nsigma) {
 
-    psImageSmooth_PreAlloc_Data *smdata = psAlloc(sizeof(psImageSmooth_PreAlloc_Data));
-    psMemSetDeallocator(smdata, (psFreeFunc) psImageSmooth_PreAlloc_DataFree);
+    psImageSmoothCacheData *smdata = psAlloc(sizeof(psImageSmoothCacheData));
+    psMemSetDeallocator(smdata, (psFreeFunc) psImageSmoothCacheDataFree);
+
+    smdata->kernel = NULL;
 
     if (!image) {
@@ -797,5 +799,4 @@
 	smdata->Nx = 0;
 	smdata->Ny = 0;
-	smdata->kernel = NULL;
 	smdata->resultX = NULL;
 	smdata->resultY = NULL;
@@ -808,4 +809,5 @@
     smdata->Ny = image->numRows;            // Number of rows
 
+    // XXX drop this : we now require a call to a kernel-creation function (like psImageSmoothCacheKernel_Gauss)
     // IMAGE_SMOOTH_GAUSS(smdata->kernel, smdata->Nrange, sigma, F32);
        
@@ -824,4 +826,5 @@
 bool psImageSmoothCacheKernel_Gauss (psImageSmoothCacheData *smdata, float sigma) {
     // check for NULL structure elements?
+    psFree (smdata->kernel);
     IMAGE_SMOOTH_GAUSS(smdata->kernel, smdata->Nrange, sigma, F32);
     return true;
@@ -832,5 +835,5 @@
 {
     PS_ASSERT_IMAGE_NON_NULL(image, false);
-    PS_ASSERT_KERNEL_NON_NULL(smdata->kernel, false);
+    PS_ASSERT_VECTOR_NON_NULL(smdata->kernel, false);
     // assert on data type
 
