String::toInt() and atol() behave different on different platforms with a number that is too large.
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- cpp
- Lĩnh vực
- embedded-iot
Hướng nghiên cứu
Bắt đầu trong String.cpp tại String::toInt() và xem xét cách atol() hoạt động với các giá trị nằm ngoài phạm vi long của nền tảng. So sánh strtol() được đề xuất và cách xử lý errno trên các nền tảng 8-bit và 32-bit; issue được hoàn tất khi các đầu vào vượt quá phạm vi tạo ra kết quả nhất quán, có tài liệu mà không xử lý sai LONG_MAX hoặc LONG_MIN.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
User axemaster found strange behavior when using String::toInt() with a number that is too large. See the topic in the Arduino forum: https://forum.arduino.cc/t/toint-bug-how-unfortunate/1041669.
The result is different for 8-bit and 32-bit platforms.
It was narrowed down to the undefined behaviour of atol() when a number is too large to fit in a long.
The atol() in String::toInt() in String.cpp could be replaced by strtol() followed by a check for LONG_MAX or LONG_MIN and return zero if that happens. The documentation can stay as it is, because it will return a long, and zero if something is wrong.
To allow LONG_MAX and LONG_MIN as valid input numbers, the errno has to be used. I don't know how that will hold up in a multitasking environment.
- Ngôn ngữ chính
- C++
- Star
- 306
- Fork
- 150
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của arduino/ArduinoCore-API
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 25/100
arduino/ArduinoCore-API#261 ·
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 30/100
arduino/ArduinoCore-API#256 ·
-
enhancement
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
arduino/ArduinoCore-API#251 · 1 bình luận ·
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
arduino/ArduinoCore-API#250 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 45/100
arduino/ArduinoCore-API#249 ·
Tất cả issue của arduino/ArduinoCore-API
Issue tương tự
-
ai_reviewed
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
ydb-platform/ydb#53869 · 3 bình luận ·
-
bug cert blocker needs triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
project-chip/connectedhomeip#74373 ·
-
[request] tracy/0.14.1 Đang mởupstream update
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
conan-io/conan-center-index#31035 ·
-
Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
documentation
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
vllm-project/vllm-ascend#17329 ·