• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stillwater-sc / universal / 32603809424
85%
master: 84%

Build:
Build:
LAST BUILD BRANCH: main
DEFAULT BRANCH: master
Ran 22 Aug 2026 11:35PM UTC
Jobs 1
Files 620
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Aug 2026 10:55PM UTC coverage: 85.387% (+0.02%) from 85.371%
32603809424

push

github

web-flow
fix(einteger): make the parse radix independent of the leading-zero count (#1381)

* fix(einteger): make the parse radix independent of the leading-zero count

parse() decided between octal and decimal in a way no caller could predict: a
single leading zero selected octal, two or more selected decimal.

    "0777"  -> 511 (octal)      "00777" -> 777 (decimal)
    "075"   ->  61 (octal)      "0075"  ->  75 (decimal)

The octal pattern required the SECOND character to be [1-7], so any string whose
second character was '0' never matched it and fell through to the decimal branch.
Zero-padding a value silently changed what it meant.

The same gap made the radix depend on the digits: a leading-zero string containing
an 8 or a 9 also fell through to decimal, so "0747" was 487 while "0749" was 749.
C rejects 08 and 0749 outright.

    octal   ^[-+]*0[1-7][0-7]*$   ->   ^[-+]*0[0-7]*$
    decimal ^[-+]*[0-9]+          ->   ^[-+]*(0|[1-9][0-9]*)$

A leading zero now commits the string to octal however many zeros there are, and
decimal no longer accepts a leading zero, so a leading-zero string with a non-octal
digit is malformed rather than quietly re-read in another radix. "0" and "00" remain
zero, which they are in any radix.

Octal support itself is unchanged and was never in question: it is a deliberate,
tested feature (elastic/einteger/conversion/string_parse.cpp has a section for it).
The issue I filed suggested dropping it on the grounds that nothing used it -- that
was wrong, and I found the test section when I went to implement it.

Callers are unaffected: the only in-tree consumer that fed parse() a possibly
zero-padded string was agreed_decimal_digits() in the elreal verification oracle,
which strips leading zeros before assign() as of #1369. A sweep of the tree finds no
other .assign() of a leading-zero decimal.

Regression coverage extends the existing octal and malformed-reject sections.
Mutation-tested: against the previous regexes nine of the new... (continued)

2 of 2 new or added lines in 1 file covered. (100.0%)

43135 of 50517 relevant lines covered (85.39%)

7188968.61 hits per line

Jobs
ID Job ID Ran Files Coverage
1 32603809424.1 22 Aug 2026 11:35PM UTC 620
85.39
GitHub Action Run
Source Files on build 32603809424
  • Tree
  • List 620
  • Changed 2
  • Source Changed 1
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32603809424
  • d1096b01 on github
  • Prev Build on main (#32599692203)
  • Next Build on main (#32610739250)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc