Guten Tag Thorsten Schöning,
am Sonntag, 27. September 2015 um 16:43 schrieben Sie:

> Guten Tag Daniel Stenberg,
> am Samstag, 26. September 2015 um 23:55 schrieben Sie:

>> Sounds like it is off-by one in reading arguments off the stack so that it 
>> got
>> the subsequent number instead of the string it was meant to get. From the
>> fprintf() at lib/progress,c:467.

> This seems to be the right track, I didn't recognized it before but
> the progress output is completely broken if I use the curl versions of
> the *printf functions:

I think I have the root cause now: curlbuild.h chooses __int64 as my
OFF_T, because I have __BORLANDC__ > 0x520. mprintf.c checks for max
integer data type on its own and recognizes HAVE_LONGLONG and some
Visual Studio defines, neither of both was set in my case. So mprintf.c
restricted to long, which is 4 bytes in my case, but the format string
and other numeric data types in the progress function was built with
__int64 in mind. After defining HAVE_LONGLONG the access violation was
gone because va_stack_t used __int64 for the "num" field as well.

While defining HAVE_LONGLONG currently solves my problem best,
curlbuild.h explicitly chooses __int64, so from my point of view the
cleanest solution would be to change mprintf.c to use __int64 in case
of __BORLANDC__ as well, like curlbuild.h does.

Any thoughts?

> Index: mprintf.c
> ===================================================================
> --- mprintf.c   (Revision 4088)
> +++ mprintf.c   (Arbeitskopie)
> @@ -63,10 +63,12 @@
>  #  define LONG_LONG_TYPE long long
>  #  define HAVE_LONG_LONG_TYPE
>  #else
> -#  if defined(_MSC_VER) && (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
> +#  if (defined(_MSC_VER)     && (_MSC_VER     >=   900) && 
> (_INTEGRAL_MAX_BITS >= 64)) || \
> +      (defined(__BORLANDC__) && (__BORLANDC__ >= 0x520))
>  #    define LONG_LONG_TYPE __int64
>  #    define HAVE_LONG_LONG_TYPE
>  #  else
> +#error test
>  #    undef LONG_LONG_TYPE
>  #    undef HAVE_LONG_LONG_TYPE
>  #  endif

Mit freundlichen Grüßen,

Thorsten Schöning

-- 
Thorsten Schöning       E-Mail: [email protected]
AM-SoFT IT-Systeme      http://www.AM-SoFT.de/

Telefon...........05151-  9468- 55
Fax...............05151-  9468- 88
Mobil..............0178-8 9468- 04

AM-SoFT GmbH IT-Systeme, Brandenburger Str. 7c, 31789 Hameln
AG Hannover HRB 207 694 - Geschäftsführer: Andreas Muchow


-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to