Fix panic in calculator when pressing ± after AC (#5352)

* fix: handle empty string in calculator plus-minus button

calc_val() panics on empty string when AC is pressed before the
plus-minus button. Return 0.0 early for empty input.

Fixes #4858

* fix a few ci failures

* fix link check

---------

Co-authored-by: Evan Almloff <evanalmloff@gmail.com>
This commit is contained in:
Andrew BarnesandEvan Almloff authored and GitHub committed 2026-03-10 11:33:41 -07:00
1 parent b7958d3d17
commit 2a34be5815
3 files changed
+8 -4

No files matched your search

+4
View File
@@ -148,6 +148,10 @@ fn app() -> Element {
} }
fn calc_val(val: &str) -> f64 { fn calc_val(val: &str) -> f64 {
if val.is_empty() {
return 0.0;
}
let mut temp = String::new(); let mut temp = String::new();
let mut operation = "+".to_string(); let mut operation = "+".to_string();
+3 -3
View File
@@ -83,9 +83,9 @@ Se você conhece React, então você já conhece o Dioxus.
## Projetos de Exemplo: ## Projetos de Exemplo:
| Navegador de Arquivos (Desktop) | WiFi Scanner (Desktop) | TodoMVC (Todas as Plataformas) | E-commerce com Tailwind (SSR/LiveView) | | Navegador de Arquivos (Desktop) | WiFi Scanner (Desktop) | TodoMVC (Todas as Plataformas) | E-commerce com Tailwind (SSR/LiveView) |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [![Explorador de Arquivos](https://github.com/DioxusLabs/example-projects/blob/master/file-explorer/assets/image.png)](https://github.com/DioxusLabs/example-projects/blob/master/file-explorer) | [![Wifi Scanner Demo](/examples/bluetooth-scanner/demo_small.png)](/examples/bluetooth-scanner/) | [![TodoMVC example](https://github.com/DioxusLabs/example-projects/raw/master/todomvc/example.png)](https://github.com/DioxusLabs/example-projects/blob/master/todomvc) | [![Exemplo de E-commerce](https://github.com/DioxusLabs/example-projects/raw/master/ecommerce-site/demo.png)](https://github.com/DioxusLabs/example-projects/blob/master/ecommerce-site) | | [![Explorador de Arquivos](https://github.com/DioxusLabs/example-projects/blob/master/file-explorer/assets/image.png)](https://github.com/DioxusLabs/example-projects/blob/master/file-explorer) | [![Wifi Scanner Demo](../../../examples/01-app-demos/bluetooth-scanner/demo_small.png)](../../../examples/01-app-demos/bluetooth-scanner/) | [![TodoMVC example](https://github.com/DioxusLabs/example-projects/raw/master/todomvc/example.png)](https://github.com/DioxusLabs/example-projects/blob/master/todomvc) | [![Exemplo de E-commerce](https://github.com/DioxusLabs/example-projects/raw/master/ecommerce-site/demo.png)](https://github.com/DioxusLabs/example-projects/blob/master/ecommerce-site) |
Veja a página [awesome-dioxus](https://github.com/DioxusLabs/awesome-dioxus) para uma lista curada do conteúdo dentro do ecossistema do Dioxus. Veja a página [awesome-dioxus](https://github.com/DioxusLabs/awesome-dioxus) para uma lista curada do conteúdo dentro do ecossistema do Dioxus.
+1 -1
View File
@@ -11,7 +11,7 @@ use syn::{BoundLifetimes, ExprClosure};
/// A closure whose body might not be valid rust code but we want to interpret it regardless. /// A closure whose body might not be valid rust code but we want to interpret it regardless.
/// This lets us provide expansions in way more cases than normal closures at the expense of an /// This lets us provide expansions in way more cases than normal closures at the expense of an
/// increased mainteance burden and complexity. /// increased maintenance burden and complexity.
/// ///
/// We do our best to reuse the same logic from partial exprs for the body of the PartialClosure. /// We do our best to reuse the same logic from partial exprs for the body of the PartialClosure.
/// The code here is simply stolen from `syn::ExprClosure` and lightly modified to work with /// The code here is simply stolen from `syn::ExprClosure` and lightly modified to work with