FREE(ALp_head->vp_Alloced);
PUBLIC void LYLeaks NOARGS{    AllocationList *ALp_head;    size_t st_total = (size_t)0;    FILE *Fp_leakagesink;    /*     *	Open the leakage sink to take all the output.     *	Recreate the file each time.     *	Do nothing if unable to open the file.     */    Fp_leakagesink = LYNewTxtFile(LEAKAGE_SINK);    if (Fp_leakagesink == NULL) {	return;    }    while (ALp_RunTimeAllocations != NULL) {	/*	 *  Take the head off of the run time allocation list.	 */	ALp_head = ALp_RunTimeAllocations;	ALp_RunTimeAllocations = ALp_head->ALp_Next;	/*	 *  Print the type of leak/error.	 *  Free off memory when we no longer need it.	 */	if (ALp_head->vp_Alloced == NULL) {	    /*	     *	If there is realloc information on the	     *	bad request, then it was a bad pointer	     *	value in a realloc statement.	     */	    fprintf(Fp_leakagesink, "%s.\n",		    gettext("Invalid pointer detected."));	    fprintf(Fp_leakagesink, "%s\t%p\n",		    gettext("Pointer:"), ALp_head->vp_BadRequest);	    /*	     *	Don't free the bad request, it is an invalid pointer.	     *	If the free source information is empty, we	     *	should check the realloc information	     *	too since it can get passed bad pointer	     *	values also.	     */	    if (ALp_head->SL_memory.cp_FileName == NULL) {		fprintf(Fp_leakagesink, "%s\t%s\n",			gettext("FileName:"),			ALp_head->SL_realloc.cp_FileName);		fprintf(Fp_leakagesink, "%s\t%d\n",			gettext("LineCount:"),			ALp_head->SL_realloc.ssi_LineNumber);	    } else {		fprintf(Fp_leakagesink, "%s\t%s\n",			gettext("FileName:"),			ALp_head->SL_memory.cp_FileName);		fprintf(Fp_leakagesink, "%s\t%d\n",			gettext("LineCount:"),			ALp_head->SL_memory.ssi_LineNumber);	    }	} else {	    size_t i_counter;	    char *value = (char *)(ALp_head->vp_Alloced);	    /*	     *	Increment the count of total memory lost and	     *	then print the information.	     */	    st_total += ALp_head->st_Bytes;	    fprintf(Fp_leakagesink, "%s\n",		    gettext("Memory leak detected."));	    fprintf(Fp_leakagesink, "%s\t%p\n",		    gettext("Pointer:"),		    ALp_head->vp_Alloced);	    fprintf(Fp_leakagesink, "%s:\t",		    gettext("Contains:"));	    for (i_counter = 0;		 i_counter < ALp_head->st_Bytes &&		 i_counter < MAX_CONTENT_LENGTH;		 i_counter++) {		if (isprint(value[i_counter])) {		    fprintf(Fp_leakagesink, "%c", value[i_counter]);		} else {		    fprintf(Fp_leakagesink, "|");		}	    }	    fprintf(Fp_leakagesink, "\n");	    FREE(ALp_head->vp_Alloced);	    fprintf(Fp_leakagesink, "%s\t%d\n",				    gettext("ByteSize:"),				    (int)(ALp_head->st_Bytes));	    fprintf(Fp_leakagesink, "%s\t%s\n",				    gettext("FileName:"),				    ALp_head->SL_memory.cp_FileName);	    fprintf(Fp_leakagesink, "%s\t%d\n",				    gettext("LineCount:"),				    ALp_head->SL_memory.ssi_LineNumber);	    /*	     *	Give the last time the pointer was realloced	     *	if it happened also.	     */	    if (ALp_head->SL_realloc.cp_FileName != NULL) {		fprintf(Fp_leakagesink, "%s\t%s\n",			gettext("realloced:"),			ALp_head->SL_realloc.cp_FileName);		fprintf(Fp_leakagesink, "%s\t%d\n",			gettext("LineCount:"),			ALp_head->SL_realloc.ssi_LineNumber);	    }	}	/*	 *  Create a blank line and release the memory held	 *  by the item.	 */	fprintf(Fp_leakagesink, "\n");	FREE(ALp_head);    }    /*     *	Give a grand total of the leakage.     *	Close the output file.     */    fprintf(Fp_leakagesink, "\n%s\t%u\n",	    gettext("Total memory leakage this run:"),	    (unsigned)st_total);    fclose(Fp_leakagesink);    HTSYS_purge(LEAKAGE_SINK);}