﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
399	reference counting for subimages isn't quite right	rhl@…	rhl@…	"When a subimage is created, the reference count on parent->rawDataBuffer is incremented,
so it needs to be decremented by imageFree()

The helper routine imageSubset in psImageExtraction.c keeps a list of children which it
frees when a parent is freed; it therefore needs to increment their reference counters.
(parenthetically, shouldn't imageSubset be declared static? Or, if it has global linkage,
it should be renamed with a ps prefix).

Here's a patch to the two reference counter issues:

RCS file: /usr/local/cvs/repositories/pan-starrs/datasys/IPP/psLib/src/image/psImage.c,v
retrieving revision 1.65
diff -a -c -w -r1.65 psImage.c
*** src/image/psImage.c	29 Apr 2005 02:25:10 -0000	1.65
--- src/image/psImage.c	6 May 2005 17:56:46 -0000
***************
*** 37,42 ****
--- 37,43 ----
      }
  
      if (image->parent != NULL) {
+ 	psFree(image->parent->rawDataBuffer); // we hold a reference to it
  	psArrayRemove(image->parent->children,image);
          image->parent = NULL;
      }
Index: src/image/psImageExtraction.c
===============================================================
====
RCS file: /usr/local/cvs/repositories/pan-starrs/datasys/IPP/psLib/src/image/psImageExtraction.c,v
retrieving revision 1.35
diff -a -c -w -r1.35 psImageExtraction.c
*** src/image/psImageExtraction.c	8 Apr 2005 17:58:57 -0000
	1.35
--- src/image/psImageExtraction.c	6 May 2005 17:56:46 -0000
***************
*** 122,128 ****
      } else {
          n = children->n;
      }
!     children->data[n] = out;
      children->n = n+1;
      image->children = children; // push back any change (esp. if children==NULL before)
  
--- 122,128 ----
      } else {
          n = children->n;
      }
!     children->data[n] = psMemIncrRefCounter(out);
      children->n = n+1;
      image->children = children; // push back any change (esp. if children==NULL before)"	defect	closed	high		imageops	0.5.0	trivial	fixed		
