• src/xpdev/genwrap.c

    From Deuc¿@VERT to Git commit to main/sbbs/master on Friday, February 11, 2022 20:49:58
    https://gitlab.synchro.net/main/sbbs/-/commit/f587a43e6fee5458e3376d5a
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    When a double is cast to an int, but the double has a larger value
    than the int supports, it's set to 0x80000000 to indicate overflow.

    msclock() is *always* overflowing, and clock_t is only 32-bits on
    some platforms (specifically FreeBSD). To "avoid" problems, just
    keep subtracting UIN32_MAX from the value until it's less than INT_MAX
    then cast.

    This function is, of course, terrible and shouldn't actually be used,
    but it should at least sorta kinda workish.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Friday, February 11, 2022 23:43:24
    https://gitlab.synchro.net/main/sbbs/-/commit/d2eda12d2c30356cc14461d5
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Fix Win32 builds maybe?

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Friday, February 11, 2022 23:47:10
    https://gitlab.synchro.net/main/sbbs/-/commit/e7761bb1b03cbbf6b3ab0662
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Fix Win32 harder

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Friday, February 11, 2022 23:49:49
    https://gitlab.synchro.net/main/sbbs/-/commit/c3c6d783f4da67a9b2a1f1ed
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Moar!

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Saturday, February 12, 2022 00:00:22
    https://gitlab.synchro.net/main/sbbs/-/commit/f0a83672aa0c8d0d638bfd62
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Resolve new msvc warning

    warning C4244: '=': conversion from 'double' to 'uint64_t', possible loss of data

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Saturday, February 12, 2022 00:07:16
    https://gitlab.synchro.net/main/sbbs/-/commit/f8da2a2f2ff8668017906f48
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    More Win32 optimizations.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Saturday, February 12, 2022 00:15:39
    https://gitlab.synchro.net/main/sbbs/-/commit/7d1fc057418fe859028b1c54
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    More Win32 optimizations.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Saturday, February 12, 2022 00:40:31
    https://gitlab.synchro.net/main/sbbs/-/commit/489c0c3c20b98f74f54046d0
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Borland doesn't have roundl() so do terrible things instead.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Saturday, February 12, 2022 00:45:48
    https://gitlab.synchro.net/main/sbbs/-/commit/0488082a3e46f9cd25efc140
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Not *that* t.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Friday, February 25, 2022 14:30:46
    https://gitlab.synchro.net/main/sbbs/-/commit/7a3dcb6c2ad19812fd674660
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Fix MSVC warning in xp_timer64()

    genwrap.c(855): warning C4244: '=': conversion from 'LONGLONG' to 'uint32_t', possible loss of data

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Wednesday, July 06, 2022 21:18:35
    https://gitlab.synchro.net/main/sbbs/-/commit/a302a01b1b42887cdece9b23
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Escape chars >= 0x7f too (DEL and ex-ASCII/UTF-8 and whatnot)

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Wednesday, July 06, 2022 21:23:26
    https://gitlab.synchro.net/main/sbbs/-/commit/735aa51e4f3bcaa8a6640416
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Fix for previous commit and escaped char values > 127 (0x7F)

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (in GitKraken)@VERT to Git commit to main/sbbs/master on Saturday, March 11, 2023 17:27:03
    https://gitlab.synchro.net/main/sbbs/-/commit/7081a525902dcc4acf4f00a2
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Fix mysterious double overflow issue in parse_byte_count()

    It's possible that some values (e.g. "16384P") exceed the storage (count of bytes) of a 64-bit integer, and such values were causing floating point exceptions when running sbbsctrl.exe, e.g.
    Faulting application name: sbbsctrl.exe, version: 3.20.0.0, time stamp: 0x00000000
    Faulting module name: gdi32full.dll, version: 10.0.19041.2604, time stamp: 0x2b5302d5
    Exception code: 0xc0000090

    but interesting (and perhaps a clue), not with sbbs.exe.

    Anyway, this added range checking, limiting the maximum value to INT64_MAX (after division by unit, though there was no division-unit in the problem
    case, the "min_dspace" value parsing in scfglib2.c). Using conditional/ternary return statement had the same floating point exception occurrences, so this if-statement shouldn't be removed/changed/optimized!

    I suspect this has something to do with mix of Borland and MSVC run-time libs and perhaps different expectations or setups with regards to floating point exceptions. I did notice that when stepping through read_file_cfg(), I would get different return values for the same call to iniGetBytes() depending on whether it was initiated from sbbsctrl.exe (built with C++Builder) or
    sbbs.dll (built with MSVC).

    Thanks to Codefenix for providing the sample file.ini file that demonstrated the issue. This problem would've been very hard to root-cause otherwise!

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (in GitKraken)@VERT to Git commit to main/sbbs/master on Friday, March 17, 2023 19:26:55
    https://gitlab.synchro.net/main/sbbs/-/commit/973b548fcd8c126de3633b5c
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Use const doubles for time durations

    Instead of copy/pasta. No change in function,.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Tuesday, March 28, 2023 15:27:09
    https://gitlab.synchro.net/main/sbbs/-/commit/ea44c50ad1ffe1a9cef1a7ff
    Modified Files:
    src/xpdev/genwrap.c
    Log Message:
    Fix clang warning: implicit conversion from 'long' to 'double'

    changes value from 9223372036854775807 to 9223372036854775808 [-Wimplicit-const-int-float-conversion]
    if(bytes < 0 || bytes > INT64_MAX)
    ~ ^~~~~~~~~
    /usr/include/x86/_stdint.h:90:19: note: expanded from macro 'INT64_MAX'
    #define INT64_MAX 0x7fffffffffffffff
    ^~~~~~~~~~~~~~~~~~

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net