Re: [Evolution-hackers] [CAMEL] CamelFolder *_getv() - What should it do?



Hi,

On Mon, 2005-10-17 at 16:48 +0530, Parthasarathi Susarla wrote:
> On Mon, 2005-10-17 at 13:04 +0200, Jules Colding wrote:
> > Hi,
> > 
> > I can see several providers implementing a *_getv() method. It seems
> > that it just provides a descriptive name of the folder in question. Is
> > that correct?
> It does a lot more than that. getv provides info based on the type of
> argument that we require to know about. This would include Total count,
> Unread count, flags, full name.....
> 
> check the 'folder_getv' method in camel-folder.c. The implementation is
> clear enough

Looking at folder_getv() raises memory handling questions. See e.g:

########### snip #############
		case CAMEL_FOLDER_ARG_NAME:
			*arg->ca_str = folder->name;
			break;
		case CAMEL_FOLDER_ARG_UID_ARRAY: {
			int j;
			CamelMessageInfo *info;
			GPtrArray *array;

			count = camel_folder_summary_count(folder->summary);
			array = g_ptr_array_new();
			g_ptr_array_set_size(array, count);
			for (j=0; j<count; j++) {
				if ((info = camel_folder_summary_index(folder->summary, j))) {
					array->pdata[i] = g_strdup(camel_message_info_uid(info));
					camel_message_info_free(info);
				}
			}
			*arg->ca_ptr = array;
			break; }

########### snip #############

arg->ca_ptr must be freed while folder->name is managed by the folder
instance. Whom is responsible for freeing the GPtrArray ?

Thanks,
  jules





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]