Skip to content

Stdlib: sscanf() %e/%g float conversions — ValueError unsupported (ext/standard/formatted_io.c) #10830

Description

@PurHur

Summary

sscanf() must support standard float scan conversions %e, %E, %f, %F, and %g per php-src formatted_io.c.

This compiler rejects %e / %g with:

ValueError: Bad scan conversion character "e"

Repro

php test/repro/maintainer_gap_sscanf_float_conversions.php               # Zend: exit 0
./script/docker-exec.sh -- php bin/vm.php test/repro/maintainer_gap_sscanf_float_conversions.php

Zend: sscanf('1.5e2', '%e', $f)$f === 150.0; sscanf('3.14', '%g', $g)$g ≈ 3.14.

This compiler: fatal ValueError on first %e pattern.

php-src reference

  • ext/standard/formatted_io.cphp_sscanf_internal() float conversions
  • ext/standard/sscanf.c

Implementation (PHP-in-PHP)

Done when (php-src-strict)

Related: #4512, #9325, #9560, #9536, #9134.

Refs #1492

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:vmVirtual machineenhancementNew feature or requestimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimphase-4:stdlibPhase 4 – stdlib for web appsstdlib

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions