String::toInt() and atol() behave different on different platforms with a number that is too large.
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 48/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- cpp
- Domínio
- embedded-iot
Direção de pesquisa
Comece em String.cpp, em String::toInt(), e revise como atol() se comporta para valores fora do intervalo long da plataforma. Compare o strtol() proposto e o tratamento de errno entre plataformas de 8-bit e 32-bit; a issue estará concluída quando entradas grandes demais produzirem resultados consistentes e documentados sem tratar LONG_MAX ou LONG_MIN incorretamente.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- C++
- Estrelas
- 307
- Forks
- 152
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de arduino/ArduinoCore-API
-
Bit manipulation not working with 64 bit valuesTalvez já em andamento @asumo-1xts assumiu há 42 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 25/100
arduino/ArduinoCore-API#261 ·
-
Missing virtual destructor for `Print` classTalvez já em andamento @andreagilardoni assumiu há 1110 dias. Abertabug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 30/100
arduino/ArduinoCore-API#256 ·
-
enhancement
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 48/100
arduino/ArduinoCore-API#251 · 1 comentário ·
-
Use modern C++ casts instead of current C-style casting approachesTalvez já em andamento @anotherSimpleCoder assumiu há 313 dias. Abertaenhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
arduino/ArduinoCore-API#250 ·
-
Always true condition in IPAddress string-to-ipv6 conversionTalvez já em andamento @pruthvi828 assumiu há 19 dias. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 45/100
arduino/ArduinoCore-API#249 ·
Todas as issues de arduino/ArduinoCore-API
Issues semelhantes
-
[BUG] Process Tab LayourAbertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 1 dia
-
c++ good first issue M2: audio plumbing no hardware needed tests
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
GageLawton/noise-cancellation#23 ·
Mantenedores costumam responder em até 1 dia
-
Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
scipy/xsf#312 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
nullmoth/nvidia-macos-driver#126 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
objectionary/eo-graphs#85 ·