From 0490365b04564750d73eea36af0ba1444d1d3d77 Mon Sep 17 00:00:00 2001 From: Jean-François Micouleau Date: Sat, 25 Sep 1999 14:18:48 +0000 Subject: Don't duplicate forms anymore, just update the definition. Many memory leaks fixed. J.F. (This used to be commit f328ae8024584599324ae4263bb9fb89a358279f) --- source3/rpc_server/srv_spoolss.c | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) (limited to 'source3/rpc_server') diff --git a/source3/rpc_server/srv_spoolss.c b/source3/rpc_server/srv_spoolss.c index eee3fcbe68..736ed07dca 100755 --- a/source3/rpc_server/srv_spoolss.c +++ b/source3/rpc_server/srv_spoolss.c @@ -1728,7 +1728,7 @@ static void enum_all_printers_info_2(PRINTER_INFO_2 ***printers, uint32 *number, { DEBUG(4,("Found a printer: %s[%x]\n",lp_servicename(snum),snum)); *printers=Realloc(*printers, (*number+1)*sizeof(PRINTER_INFO_2 *)); - DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_1 pointers at [%p]\n", *number+1, *printers)); + DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_2 pointers at [%p]\n", *number+1, *printers)); if (enum_printer_info_2( &((*printers)[*number]), snum, *number, conn) ) { (*number)++; @@ -2071,7 +2071,6 @@ static void make_unistr_array(UNISTR ***uni_array, char **char_array, char *wher DEBUGADD(7,("last one\n")); *uni_array=(UNISTR **)Realloc(*uni_array, sizeof(UNISTR *)*(i+1)); - (*uni_array)[i]=(UNISTR *)malloc( sizeof(UNISTR)); (*uni_array)[i]=0x0000; DEBUGADD(6,("last one:done\n")); } @@ -2190,8 +2189,20 @@ static void spoolss_reply_getprinterdriver2(SPOOL_Q_GETPRINTERDRIVER2 *q_u, prs_ if (info1!=NULL) free(info1); if (info2!=NULL) free(info2); - if (info3!=NULL) free(info3); + if (info3!=NULL) + { + UNISTR **dependentfiles; + int j=0; + dependentfiles=info3->dependentfiles; + while ( dependentfiles[j] != NULL ) + { + free(dependentfiles[j]); + j++; + } + free(dependentfiles); + free(info3); + } } /******************************************************************** @@ -3055,6 +3066,20 @@ static void spoolss_reply_enumprinterdrivers(SPOOL_Q_ENUMPRINTERDRIVERS *q_u, pr } case 3: { + UNISTR **dependentfiles; + + for (i=0; i