* fixed an issue in parsing an expression like "a++ ++b" or "1 ++b"
* added _WIN32 code handling QSE_PIO_MBSCMD * fixed various _WIN32 issues in qse_env_t * added untested OS2 code handling QSE_PIO_MBSCMD
This commit is contained in:
		| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: parse.c 521 2011-07-25 08:25:13Z hyunghwan.chung $ | ||||
|  * $Id: parse.c 540 2011-08-11 15:11:02Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2011 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -4141,22 +4141,27 @@ static qse_awk_nde_t* parse_increment ( | ||||
| 	opcode2 = MATCH(awk,TOK_PLUSPLUS)? QSE_AWK_INCOP_PLUS: | ||||
| 	          MATCH(awk,TOK_MINUSMINUS)? QSE_AWK_INCOP_MINUS: -1; | ||||
|  | ||||
| 	if (opcode1 != -1 && opcode2 != -1) | ||||
| 	{ | ||||
| 		/* both prefix and postfix increment operator.  | ||||
| 		 * not allowed */ | ||||
| 		qse_awk_clrpt (awk, left); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EPREPST, xloc); | ||||
| 		return QSE_NULL; | ||||
| 	if ((awk->option & QSE_AWK_EXPLICIT) && !(awk->option & QSE_AWK_IMPLICIT)) | ||||
| 	{	 | ||||
| 		if (opcode1 != -1 && opcode2 != -1) | ||||
| 		{ | ||||
| 			/* both prefix and postfix increment operator.  | ||||
| 			 * not allowed */ | ||||
| 			qse_awk_clrpt (awk, left); | ||||
| 			SETERR_LOC (awk, QSE_AWK_EPREPST, xloc); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
| 	} | ||||
| 	else if (opcode1 == -1 && opcode2 == -1) | ||||
|  | ||||
| 	if (opcode1 == -1 && opcode2 == -1) | ||||
| 	{ | ||||
| 		/* no increment operators */ | ||||
| 		return left; | ||||
| 	} | ||||
| 	else if (opcode1 != -1)  | ||||
| 	{ | ||||
| 		/* prefix increment operator */ | ||||
| 		/* prefix increment operator. | ||||
| 		 * ignore a potential postfix operator */ | ||||
| 		type = QSE_AWK_NDE_EXP_INCPRE; | ||||
| 		opcode = opcode1; | ||||
| 	} | ||||
| @ -4175,9 +4180,18 @@ static qse_awk_nde_t* parse_increment ( | ||||
|  | ||||
| 	if (!is_var(left) && left->type != QSE_AWK_NDE_POS) | ||||
| 	{ | ||||
| 		qse_awk_clrpt (awk, left); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EINCDECOPR, xloc); | ||||
| 		return QSE_NULL; | ||||
| 		if (type == QSE_AWK_NDE_EXP_INCPST) | ||||
| 		{ | ||||
| 			/* For an expression like 1 ++y, | ||||
| 			 * left is 1. so we leave ++ for y. */ | ||||
| 			return left; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			qse_awk_clrpt (awk, left); | ||||
| 			SETERR_LOC (awk, QSE_AWK_EINCDECOPR, xloc); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	nde = (qse_awk_nde_exp_t*)  | ||||
|  | ||||
| @ -23,6 +23,10 @@ | ||||
| #include <qse/cmn/str.h> | ||||
| #include "mem.h" | ||||
|  | ||||
| #if defined(_WIN32) | ||||
| #    include <windows.h> | ||||
| #endif | ||||
|  | ||||
| #define STRSIZE 4096 | ||||
| #define ARRSIZE 128 | ||||
|  | ||||
| @ -207,7 +211,7 @@ static int add_envstrw (qse_env_t* env, const qse_wchar_t* nv) | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| static int deletem (qse_env_t* env, const qse_wchar_t* name) | ||||
| static int deletew (qse_env_t* env, const qse_wchar_t* name) | ||||
| { | ||||
| 	qse_size_t i; | ||||
|  | ||||
| @ -224,7 +228,7 @@ static int deletem (qse_env_t* env, const qse_wchar_t* name) | ||||
| 			/* bingo */ | ||||
| 			qse_size_t len, rem; | ||||
|  | ||||
| 			len = qse_mbslen (vp) + 1; | ||||
| 			len = qse_wcslen (vp) + 1; | ||||
| 			rem = env->str.len - (vp + len - env->str.ptr) + 1; | ||||
| 			QSE_MEMCPY (vp, vp + len, rem * QSE_SIZEOF(*vp)); | ||||
| 			env->str.len -= len; | ||||
| @ -416,7 +420,7 @@ int qse_env_deletem (qse_env_t* env, const qse_mchar_t* name) | ||||
| } | ||||
|  | ||||
| #if defined(_WIN32)  | ||||
| static qse_char_t* getenv (const qse_char_t* name, int* free) | ||||
| static qse_char_t* get_env (qse_env_t* env, const qse_char_t* name, int* free) | ||||
| { | ||||
| 	DWORD n; | ||||
|  | ||||
| @ -449,7 +453,7 @@ static qse_char_t* getenv (const qse_char_t* name, int* free) | ||||
| #	error IMPLEMENT THIS | ||||
|  | ||||
| #else | ||||
| static qse_mchar_t* getenv (const qse_mchar_t* name, int* free) | ||||
| static qse_mchar_t* get_env (qse_env_t* env, const qse_mchar_t* name, int* free) | ||||
| { | ||||
| 	extern char** environ; | ||||
| 	char** p = environ; | ||||
| @ -473,13 +477,16 @@ static qse_mchar_t* getenv (const qse_mchar_t* name, int* free) | ||||
| int qse_env_insertsysw (qse_env_t* env, const qse_wchar_t* name) | ||||
| { | ||||
| #if defined(_WIN32) && defined(QSE_CHAR_IS_WCHAR) | ||||
| 	int ret, free; | ||||
| 	qse_wchar_t* v; | ||||
| 	int free; | ||||
| 	int ret = -1;  | ||||
|  | ||||
| 	v = getenv (name, &free); | ||||
| 	if (v == QSE_NULL) return 0; | ||||
| 	ret = insertw (env, name, v); | ||||
| 	if (free) QSE_MMGR_FREE (env->mmgr, v); | ||||
| 	v = get_env (env, name, &free); | ||||
| 	if (v) | ||||
| 	{ | ||||
| 		ret = insertw (env, name, v); | ||||
| 		if (free) QSE_MMGR_FREE (env->mmgr, v); | ||||
| 	} | ||||
| 	return ret; | ||||
| #else | ||||
| 	/* convert wchar to mchar */ | ||||
| @ -513,13 +520,16 @@ int qse_env_insertsysm (qse_env_t* env, const qse_mchar_t* name) | ||||
|  | ||||
| 	return ret; | ||||
| #else | ||||
| 	int ret, free; | ||||
| 	qse_mchar_t* v; | ||||
| 	int free; | ||||
| 	int ret = -1;  | ||||
|  | ||||
| 	v = getenv (name, &free); | ||||
| 	if (v == QSE_NULL) return -1; | ||||
| 	ret = insertm (env, name, v); | ||||
| 	if (free) QSE_MMGR_FREE (env->mmgr, v); | ||||
| 	v = get_env (env, name, &free); | ||||
| 	if (v) | ||||
| 	{ | ||||
| 		ret = insertm (env, name, v); | ||||
| 		if (free) QSE_MMGR_FREE (env->mmgr, v); | ||||
| 	} | ||||
| 	return ret; | ||||
| #endif | ||||
| } | ||||
| @ -536,14 +546,24 @@ static int load_curenv (qse_env_t* env) | ||||
| #if defined(QSE_CHAR_IS_WCHAR) | ||||
| 	while (*envstr != QSE_WT('\0')) | ||||
| 	{ | ||||
| 		if (add_envstrw (env, envstr) <= -1) { ret = -1; goto done; } | ||||
| 		envstr += qse_wcslen(evnstr) + 1; | ||||
| 		/* It seems that entries like the followings exist in the  | ||||
| 		 * environment variable string. | ||||
| 		 *  - =::=::\ | ||||
| 		 *  - =C:=C:\Documents and Settings\Administrator | ||||
| 		 *  - =ExitCode=00000000 | ||||
| 		 * | ||||
| 		 * So entries beginning with = are excluded. | ||||
| 		 */ | ||||
| 		if (*envstr != QSE_WT('=') && | ||||
| 		    add_envstrw (env, envstr) <= -1) { ret = -1; goto done; } | ||||
| 		envstr += qse_wcslen (envstr) + 1; | ||||
| 	}		 | ||||
| #else | ||||
| 	while (*envstr != QSE_MT('\0')) | ||||
| 	{ | ||||
| 		if (add_envstrm (env, envstr) <= -1) { ret = -1; goto done; } | ||||
| 		envstr += qse_mbslen(evnstr) + 1; | ||||
| 		if (*envstr != QSE_MT('=') && | ||||
| 		    add_envstrm (env, envstr) <= -1) { ret = -1; goto done; } | ||||
| 		envstr += qse_mbslen (envstr) + 1; | ||||
| 	}		 | ||||
| #endif | ||||
|  | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: pio.c 539 2011-08-10 16:18:35Z hyunghwan.chung $ | ||||
|  * $Id: pio.c 540 2011-08-11 15:11:02Z hyunghwan.chung $ | ||||
|  * | ||||
|     Copyright 2006-2011 Chung, Hyung-Hwan. | ||||
|     This file is part of QSE. | ||||
| @ -244,19 +244,66 @@ qse_pio_t* qse_pio_init ( | ||||
| 	 * takes the entire command line */ | ||||
|  | ||||
| 	{ | ||||
| 		const qse_char_t* dupcmd; | ||||
| 		qse_char_t* dupcmd; | ||||
| 		BOOL x; | ||||
|  | ||||
| 		if (oflags & QSE_PIO_SHELL)  | ||||
| 		{ | ||||
| 			qse_size_t reqlen; | ||||
| 		#if defined(QSE_CHAR_IS_WCHAR) | ||||
| 			if (oflags & QSE_PIO_MBSCMD) | ||||
| 			{ | ||||
| 				const qse_mchar_t* mbs = (const qse_mchar_t*)cmd; | ||||
| 				qse_size_t ll = qse_mbstowcslen (mbs, &reqlen); | ||||
| 				if (mbs[ll] != QSE_MT('\0')) goto oops; /* illegal sequence */ | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 		#endif | ||||
| 				reqlen = qse_strlen(cmd);				 | ||||
| 		#if defined(QSE_CHAR_IS_WCHAR) | ||||
| 			} | ||||
| 		#endif | ||||
|  | ||||
| 			reqlen++; /* increment for a terminating null */ | ||||
|  | ||||
| 			dupcmd = QSE_MMGR_ALLOC ( | ||||
| 				mmgr, (11+qse_strlen(cmd)+1 )*QSE_SIZEOF(qse_char_t)); | ||||
| 				mmgr, (11 + reqlen) * QSE_SIZEOF(*dupcmd) | ||||
| 			); | ||||
| 			if (dupcmd == QSE_NULL) goto oops; | ||||
|  | ||||
| 			qse_strcpy (dupcmd, QSE_T("cmd.exe /c ")); | ||||
| 			qse_strcpy (&dupcmd[11], cmd); | ||||
|  | ||||
| 		#if defined(QSE_CHAR_IS_WCHAR) | ||||
| 			if (oflags & QSE_PIO_MBSCMD) | ||||
| 			{ | ||||
| 				qse_mbstowcs ((const qse_mchar_t*)cmd, &dupcmd[11], &reqlen); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 		#endif | ||||
| 				qse_strcpy (&dupcmd[11], cmd); | ||||
| 		#if defined(QSE_CHAR_IS_WCHAR) | ||||
| 			} | ||||
| 		#endif | ||||
| 		} | ||||
| 		else  | ||||
| 		{ | ||||
| 		#if defined(QSE_CHAR_IS_WCHAR) | ||||
| 			if (oflags & QSE_PIO_MBSCMD) | ||||
| 			{ | ||||
| 				dupcmd = qse_mbstowcsdup ((const qse_mchar_t*)cmd, mmgr); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 		#endif | ||||
| 				/* CreateProcess requires command buffer to be read-write. */ | ||||
| 				dupcmd = qse_strdup (cmd, mmgr); | ||||
| 		#if defined(QSE_CHAR_IS_WCHAR) | ||||
| 			} | ||||
| 		#endif | ||||
| 			if (dupcmd == QSE_NULL) goto oops; | ||||
| 		} | ||||
| 		else dupcmd = cmd; | ||||
|  | ||||
| 		x = CreateProcess ( | ||||
| 			QSE_NULL,  /* LPCTSTR lpApplicationName */ | ||||
| @ -275,7 +322,7 @@ qse_pio_t* qse_pio_init ( | ||||
| 			&procinfo /* LPPROCESS_INFORMATION lpProcessInformation */ | ||||
| 		); | ||||
|  | ||||
| 		if (dupcmd != cmd) QSE_MMGR_FREE (mmgr, dupcmd);  | ||||
| 		QSE_MMGR_FREE (mmgr, dupcmd);  | ||||
| 		if (x == FALSE) goto oops; | ||||
| 	} | ||||
|  | ||||
| @ -459,11 +506,18 @@ qse_pio_t* qse_pio_init ( | ||||
| 	#ifdef QSE_CHAR_IS_MCHAR | ||||
| 		mn = qse_strlen(cmd); | ||||
| 	#else | ||||
| 		n = qse_wcstombslen (cmd, &mn); | ||||
| 		if (cmd[n] != QSE_WT('\0')) goto oops; /* illegal sequence found */ | ||||
| 		if (oflags & QSE_PIO_MBSCMD) | ||||
| 		{ | ||||
| 			mn = qse_mbslen((const qse_mchar_t*)cmd); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			n = qse_wcstombslen (cmd, &mn); | ||||
| 			if (cmd[n] != QSE_WT('\0')) goto oops; /* illegal sequence found */ | ||||
| 		} | ||||
| 	#endif | ||||
| 		cmd_line = QSE_MMGR_ALLOC ( | ||||
| 			mmgr, ((11+mn+1+1) * QSE_SIZEOF(qse_mchar_t))); | ||||
| 			mmgr, ((11+mn+1+1) * QSE_SIZEOF(*cmd_line))); | ||||
| 		if (cmd_line == QSE_NULL) goto oops; | ||||
|  | ||||
| 		qse_mbscpy (cmd_line, QSE_MT("cmd.exe")); /* cmd.exe\0/c */  | ||||
| @ -471,8 +525,15 @@ qse_pio_t* qse_pio_init ( | ||||
| 	#ifdef QSE_CHAR_IS_MCHAR | ||||
| 		qse_mbscpy (&cmd_line[11], cmd); | ||||
| 	#else | ||||
| 		mn = mn + 1; /* update the buffer size */ | ||||
| 		n = qse_wcstombs (cmd, &cmd_line[11], &mn); | ||||
| 		if (oflags & QSE_PIO_MBSCMD) | ||||
| 		{ | ||||
| 			qse_mbscpy (&cmd_line[11], (const qse_mchar_t*)cmd); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			mn = mn + 1; /* update the buffer size */ | ||||
| 			n = qse_wcstombs (cmd, &cmd_line[11], &mn); | ||||
| 		} | ||||
| 	#endif | ||||
| 		cmd_line[11+mn+1] = QSE_MT('\0'); /* additional \0 after \0 */     | ||||
| 		 | ||||
| @ -487,15 +548,24 @@ qse_pio_t* qse_pio_init ( | ||||
| 		cmd_line = qse_strdup2 (cmd, QSE_T(" "), pio->mmgr); | ||||
| 		if (cmd_line == QSE_NULL) goto oops; | ||||
| 	#else    | ||||
| 		qse_size_t n, mn; | ||||
| 		n = qse_wcstombslen (cmd, &mn); | ||||
| 		if (cmd[n] != QSE_T('\0')) goto oops; /* illegal sequence in cmd */ | ||||
|  | ||||
| 		mn = mn + 1; | ||||
| 		cmd_line = QSE_MMGR_ALLOC (pio->mmgr, mn * QSE_SIZEOF(qse_char_t)); | ||||
| 		if (cmd_line == QSE_NULL) goto oops; | ||||
| 		if (oflags & QSE_PIO_MBSCMD) | ||||
| 		{ | ||||
| 			qse_size_t mn = qse_mbslen((const qse_mchar_t*)cmd); | ||||
| 			cmd_line = qse_mbsdup2 ((const qse_mchar_t*)cmd, QSE_MT(" "), pio->mmgr); | ||||
| 			if (cmd_line == QSE_NULL) goto oops; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			qse_size_t n, mn; | ||||
| 			n = qse_wcstombslen (cmd, &mn); | ||||
| 			if (cmd[n] != QSE_T('\0')) goto oops; /* illegal sequence in cmd */ | ||||
| 	 | ||||
| 			mn = mn + 1; | ||||
| 			cmd_line = QSE_MMGR_ALLOC (pio->mmgr, mn * QSE_SIZEOF(qse_char_t)); | ||||
| 			if (cmd_line == QSE_NULL) goto oops; | ||||
|    | ||||
| 		qse_wcstombs (cmd, cmd_line, &mn); | ||||
| 			qse_wcstombs (cmd, cmd_line, &mn); | ||||
| 		} | ||||
| 	#endif | ||||
|  | ||||
| 		/* TODO: enhance this part by: | ||||
|  | ||||
| @ -716,14 +716,20 @@ void qse_xma_dump (qse_xma_t* xma, qse_xma_dumper_t dumper, void* ctx) | ||||
|  | ||||
| #ifdef QSE_XMA_ENABLE_STAT | ||||
| 	dumper (ctx, QSE_T("== statistics ==\n")); | ||||
| #if QSE_SIZEOF_LONG >= QSE_SIZEOF_LONG_LONG | ||||
| #if (QSE_SIZEOF_SIZE_T == QSE_SIZEOF_LONG) | ||||
| 	dumper (ctx, QSE_T("total = %lu\n"), (unsigned long)xma->stat.total); | ||||
| 	dumper (ctx, QSE_T("alloc = %lu\n"), (unsigned long)xma->stat.alloc); | ||||
| 	dumper (ctx, QSE_T("avail = %lu\n"), (unsigned long)xma->stat.avail); | ||||
| #else | ||||
| #elif (QSE_SIZEOF_SIZE_T == QSE_SIZEOF_LONG_LONG) | ||||
| 	dumper (ctx, QSE_T("total = %llu\n"), (unsigned long long)xma->stat.total); | ||||
| 	dumper (ctx, QSE_T("alloc = %llu\n"), (unsigned long long)xma->stat.alloc); | ||||
| 	dumper (ctx, QSE_T("avail = %llu\n"), (unsigned long long)xma->stat.avail); | ||||
| #elif (QSE_SIZEOF_SIZE_T == QSE_SIZEOF_INT) | ||||
| 	dumper (ctx, QSE_T("total = %u\n"), (unsigned int)xma->stat.total); | ||||
| 	dumper (ctx, QSE_T("alloc = %u\n"), (unsigned int)xma->stat.alloc); | ||||
| 	dumper (ctx, QSE_T("avail = %u\n"), (unsigned int)xma->stat.avail); | ||||
| #else | ||||
| #	error weird size of qse_size_t. unsupported platform | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| @ -731,14 +737,20 @@ void qse_xma_dump (qse_xma_t* xma, qse_xma_dumper_t dumper, void* ctx) | ||||
| 	dumper (ctx, QSE_T(" size               avail address\n")); | ||||
| 	for (tmp = xma->head, fsum = 0, asum = 0; tmp; tmp = tmp->b.next) | ||||
| 	{ | ||||
| #if QSE_SIZEOF_LONG >= QSE_SIZEOF_LONG_LONG | ||||
| 		dumper (ctx, QSE_T(" %-18lu %-5d %p\n"),  | ||||
| 			(unsigned long)tmp->size, tmp->avail, tmp | ||||
| #if (QSE_SIZEOF_SIZE_T == QSE_SIZEOF_LONG) | ||||
| 		dumper (ctx, QSE_T(" %-18lu %-5u %p\n"),  | ||||
| 			(unsigned long)tmp->size, (unsigned int)tmp->avail, tmp | ||||
| 		); | ||||
| #elif (QSE_SIZEOF_SIZE_T == QSE_SIZEOF_LONG_LONG) | ||||
| 		dumper (ctx, QSE_T(" %-18llu %-5u %p\n"),  | ||||
| 			(unsigned long long)tmp->size, (unsigned int)tmp->avail, tmp | ||||
| 		); | ||||
| #elif (QSE_SIZEOF_SIZE_T == QSE_SIZEOF_INT) | ||||
| 		dumper (ctx, QSE_T(" %-18u %-5u %p\n"),  | ||||
| 			(unsigned int)tmp->size, (unsigned int)tmp->avail, tmp | ||||
| 		); | ||||
| #else | ||||
| 		dumper (ctx, QSE_T(" %-18llu %-5d %p\n"),  | ||||
| 			(unsigned long long)tmp->size, tmp->avail, tmp | ||||
| 		); | ||||
| #	error weird size of qse_size_t. unsupported platform | ||||
| #endif | ||||
| 		if (tmp->avail) fsum += tmp->size; | ||||
| 		else asum += tmp->size; | ||||
| @ -749,21 +761,31 @@ void qse_xma_dump (qse_xma_t* xma, qse_xma_dumper_t dumper, void* ctx) | ||||
| #endif | ||||
|  | ||||
| 	dumper (ctx, QSE_T("---------------------------------------\n")); | ||||
| #if QSE_SIZEOF_LONG >= QSE_SIZEOF_LONG_LONG | ||||
| #if (QSE_SIZEOF_ULONG_T == QSE_SIZEOF_LONG) | ||||
| 	dumper (ctx, QSE_T("Allocated blocks: %18lu bytes\n"), (unsigned long)asum); | ||||
| 	dumper (ctx, QSE_T("Available blocks: %18lu bytes\n"), (unsigned long)fsum); | ||||
| #else | ||||
| #elif (QSE_SIZEOF_ULONG_T == QSE_SIZEOF_LONG_LONG) | ||||
| 	dumper (ctx, QSE_T("Allocated blocks: %18llu bytes\n"), (unsigned long long)asum); | ||||
| 	dumper (ctx, QSE_T("Available blocks: %18llu bytes\n"), (unsigned long long)fsum); | ||||
| #elif (QSE_SIZEOF_ULONG_T == QSE_SIZEOF_INT) | ||||
| 	dumper (ctx, QSE_T("Allocated blocks: %18u bytes\n"), (unsigned int)asum); | ||||
| 	dumper (ctx, QSE_T("Available blocks: %18u bytes\n"), (unsigned int)fsum); | ||||
| #else | ||||
| #	error weird size of qse_ulong_t. unsupported platform | ||||
| #endif | ||||
|  | ||||
| #ifdef QSE_XMA_ENABLE_STAT | ||||
| #if QSE_SIZEOF_LONG >= QSE_SIZEOF_LONG_LONG | ||||
| #if (QSE_SIZEOF_ULONG_T == QSE_SIZEOF_LONG) | ||||
| 	dumper (ctx, QSE_T("Internal use    : %18lu bytes\n"), (unsigned long)isum); | ||||
| 	dumper (ctx, QSE_T("Total           : %18lu bytes\n"), (unsigned long)(asum + fsum + isum)); | ||||
| #else | ||||
| #elif (QSE_SIZEOF_ULONG_T == QSE_SIZEOF_LONG_LONG) | ||||
| 	dumper (ctx, QSE_T("Internal use    : %18llu bytes\n"), (unsigned long long)isum); | ||||
| 	dumper (ctx, QSE_T("Total           : %18llu bytes\n"), (unsigned long long)(asum + fsum + isum)); | ||||
| #elif (QSE_SIZEOF_ULONG_T == QSE_SIZEOF_INT) | ||||
| 	dumper (ctx, QSE_T("Internal use    : %18u bytes\n"), (unsigned int)isum); | ||||
| 	dumper (ctx, QSE_T("Total           : %18u bytes\n"), (unsigned int)(asum + fsum + isum)); | ||||
| #else | ||||
| #	error weird size of qse_ulong_t. unsupported platform | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user