)]}'
{
  "commit": "11279616cf96c81d57542d5ddabc49d4ad79a0ac",
  "tree": "cd0c67913c715130560c2e944d205978adbfd1f3",
  "parents": [
    "43f3834e3ffd903370c504e357461e407b3d3983"
  ],
  "author": {
    "name": "Jordan Bayles",
    "email": "bayles.jordan@gmail.com",
    "time": "Tue Jun 16 16:03:00 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 16 16:03:00 2026 -0700"
  },
  "message": "fix: accept subnormal doubles when parsing (#1427) (#1695)\n\ndecodeDouble parsed numbers via `istringstream \u003e\u003e double`. For a\nsubnormal value such as `3.2114e-312`, operator\u003e\u003e sets failbit (the\nresult underflowed) even though it produced the correctly-rounded value.\nThe failure path only special-cased overflow, so subnormals were\nrejected as \"not a number\" -- meaning a value jsoncpp had just serialized\ncould fail to parse back.\n\nIn the failure path, accept the value when it is a subnormal\n(std::fpclassify(value) \u003d\u003d FP_SUBNORMAL). This keys off the value\noperator\u003e\u003e produces, which is the correctly-rounded subnormal on\nlibstdc++, libc++, and MSVC, so it needs no errno/eof heuristics. It\ndeliberately does not accept results that round to zero, so malformed\nnumbers like \"0e\" / \"0e+\" (jsonchecker fail29/fail30) and other junk are\nstill rejected. Applied to both Reader and OurReader.\n\nAdds CharReaderTest/parseSubnormal covering subnormals, a writer\nround-trip, and continued rejection of malformed numbers.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "39ebcc6b5960fa8cb5ed4d5359bba9504501c4ed",
      "old_mode": 33188,
      "old_path": "src/lib_json/json_reader.cpp",
      "new_id": "ce9ca1bda60baba3d92d649b759f9f3f2177f950",
      "new_mode": 33188,
      "new_path": "src/lib_json/json_reader.cpp"
    },
    {
      "type": "modify",
      "old_id": "6673867dcd48316db6c9deae3c9b1a97741fe7b9",
      "old_mode": 33188,
      "old_path": "src/test_lib_json/main.cpp",
      "new_id": "495bbb51e1520c0009b6f8555c4025201ea04785",
      "new_mode": 33188,
      "new_path": "src/test_lib_json/main.cpp"
    }
  ]
}
