Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • pike pike
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 119
    • Issues 119
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • pikelang
  • pikepike
  • Issues
  • #10018

Closed
Open
Created Mar 13, 2020 by Henrik (Grubba) Grubbström@grubbaMaintainer

Typechecking errors with large integers and sprintf("%c").

The testsuite currently fails with:

Doing tests in testsuite (12091 tests, pid 29825)
Fri Mar 13 16:28:53 2020: Thread.Thread(0x7fced9367700) at 900
testsuite:2: Soft cast of string(1: -1412597613) to string(2147483647) isn't a valid cast.
testsuite:2: Expected: string(2147483647).
testsuite:2: Got     : string(1: -1412597613).
/lhome/build/Xenofarm/client/pike-devel/medaka.roxen.com/buildtmp/Pike-v8.1-snapshot/src/testsuite.in:14918: Test 11817 (CRNL) failed.
  1: mixed a() { return "\25363274223"; }
  2: mixed b() { return  sprintf("%c", 0x1abcd7893) ; }

testsuite:2: Soft cast of string(1: 1412597613) to string(-2147483648) isn't a valid cast.
testsuite:2: Expected: string(-2147483648).
testsuite:2: Got     : string(1: 1412597613).
/lhome/build/Xenofarm/client/pike-devel/medaka.roxen.com/buildtmp/Pike-v8.1-snapshot/src/testsuite.in:14919: Test 11818 (shift 1) (CRNL) failed.
  1: mixed a() { return "\12414503555"; }
  2: mixed b() { return  sprintf("%c", -0x1abcd7893) ; }

Subresult: 41609 tests, 2 failed, 13 skipped

The cause is that the values 025363274223, 0x1abcd7893, 012414503555 and -0x1abcd7893 all are out of the 32-bit signed range of the integer type.

The easiest fix is probably just to switch the type for large integers to the generic int type.

Assignee
Assign to
Time tracking