diff options
author | axel <axel@liljencrantz.se> | 2006-05-13 01:44:47 +1000 |
---|---|---|
committer | axel <axel@liljencrantz.se> | 2006-05-13 01:44:47 +1000 |
commit | 3d192a8e93d999faa13b121960bdd3dbec3a5553 (patch) | |
tree | d7c46cc56719e37cd69d32a2a136b2b3af4b231f | |
parent | f5c6306bde9c9e90cd79a02c0dcb0561515314ef (diff) |
Remoce C99:ism (Non-constant expression as array size)
darcs-hash:20060512154447-ac50b-5731603e1bf75f91703bf79cc06f6bbdb94e6a61.gz
-rw-r--r-- | wutil.c | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -137,16 +137,28 @@ struct wdirent *wreaddir(DIR *dir ) wchar_t *wgetcwd( wchar_t *buff, size_t sz ) { - char buffc[sz*MAX_UTF8_BYTES]; - char *res = getcwd( buffc, sz*MAX_UTF8_BYTES ); - if( !res ) + char *buffc = malloc( sz*MAX_UTF8_BYTES); + char *res; + wchar_t *ret = 0; + + if( !buffc ) + { + errno = ENOMEM; return 0; + } - if( (size_t)-1 == mbstowcs( buff, buffc, sizeof( wchar_t ) * sz ) ) + res = getcwd( buffc, sz*MAX_UTF8_BYTES ); + if( res ) { - return 0; - } - return buff; + if( (size_t)-1 != mbstowcs( buff, buffc, sizeof( wchar_t ) * sz ) ) + { + ret = buff; + } + } + + free( buffc ); + + return ret; } int wchdir( const wchar_t * dir ) |