if (data != NULL)
if (data == NULL) { if (inc && (es->err_data[i] != NULL) && (es->err_data_flags[i] & ERR_TXT_MALLOCED)) { OPENSSL_free(es->err_data[i]); es->err_data[i] = NULL; } } else
static unsigned long get_error_values(int inc, const char **file, int *line,	     const char **data, int *flags)	{		int i=0;	ERR_STATE *es;	unsigned long ret;	es=ERR_get_state();	if (es->bottom == es->top) return(0);	i=(es->bottom+1)%ERR_NUM_ERRORS;	ret=es->err_buffer[i];	if (inc)		{		es->bottom=i;		es->err_buffer[i]=0;		}	if ((file != NULL) && (line != NULL))		{		if (es->err_file[i] == NULL)			{			*file="NA";			if (line != NULL) *line=0;			}		else			{			*file=es->err_file[i];			if (line != NULL) *line=es->err_line[i];			}		}	if (data != NULL)		{		if (es->err_data[i] == NULL)			{			*data="";			if (flags != NULL) *flags=0;			}		else			{			*data=es->err_data[i];			if (flags != NULL) *flags=es->err_data_flags[i];			}		}	return(ret);	}