From 8a63dce85ff76db8d2204810967df584e376850f Mon Sep 17 00:00:00 2001 From: Luke D Jones Date: Thu, 11 Mar 2021 23:42:38 +1300 Subject: [PATCH] Bugfix: destroy the deref clone stackoverflow --- Cargo.lock | 2 +- asusctl/Cargo.toml | 2 +- asusctl/src/main.rs | 21 +++++++++++---------- rog-types/src/aura_modes.rs | 34 +++++++++++++++++----------------- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d02416e6..c2cbb444 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -33,7 +33,7 @@ dependencies = [ [[package]] name = "asusctl" -version = "3.1.2" +version = "3.1.3" dependencies = [ "daemon", "gumdrop", diff --git a/asusctl/Cargo.toml b/asusctl/Cargo.toml index bc63900f..4611290d 100644 --- a/asusctl/Cargo.toml +++ b/asusctl/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "asusctl" -version = "3.1.2" +version = "3.1.3" authors = ["Luke D Jones "] edition = "2018" diff --git a/asusctl/src/main.rs b/asusctl/src/main.rs index 63928170..ee66a6a1 100644 --- a/asusctl/src/main.rs +++ b/asusctl/src/main.rs @@ -4,12 +4,7 @@ use daemon::{ }; use gumdrop::{Opt, Options}; use rog_dbus::AuraDbusClient; -use rog_types::{ - anime_matrix::{AniMeDataBuffer, FULL_PANE_LEN}, - cli_options::{AniMeActions, AniMeStatusValue, LedBrightness, SetAuraBuiltin}, - gfx_vendors::GfxVendors, - profile::{FanLevel, ProfileCommand, ProfileEvent}, -}; +use rog_types::{anime_matrix::{AniMeDataBuffer, FULL_PANE_LEN}, aura_modes::AuraModes, cli_options::{AniMeActions, AniMeStatusValue, LedBrightness, SetAuraBuiltin}, gfx_vendors::GfxVendors, profile::{FanLevel, ProfileCommand, ProfileEvent}}; use std::env::args; use yansi_term::Colour::Green; use yansi_term::Colour::Red; @@ -336,17 +331,23 @@ fn handle_led_mode( } println!("\nHelp can also be requested on modes, e.g: static --help"); - std::process::exit(1); + return Ok(()); } + if mode.next_mode && mode.prev_mode { - println!("Please specify either next or previous") + println!("Please specify either next or previous"); + return Ok(()); } if mode.next_mode { dbus.proxies().led().next_led_mode()?; } else if mode.prev_mode { dbus.proxies().led().prev_led_mode()?; - } else if let Some(command) = mode.command.as_ref() { - dbus.proxies().led().set_led_mode(&command.into())? + } else if let Some(mode) = mode.command.as_ref() { + if mode.help_requested() { + println!("{}", mode.self_usage()); + return Ok(()); + } + dbus.proxies().led().set_led_mode(&::from(mode))?; } Ok(()) } diff --git a/rog-types/src/aura_modes.rs b/rog-types/src/aura_modes.rs index 6dde24f7..fe1b5486 100644 --- a/rog-types/src/aura_modes.rs +++ b/rog-types/src/aura_modes.rs @@ -204,28 +204,28 @@ pub enum AuraModes { impl From for AuraModes { fn from(mode: SetAuraBuiltin) -> Self { - match mode { - SetAuraBuiltin::Static(x) => AuraModes::Static(x), - SetAuraBuiltin::Breathe(x) => AuraModes::Breathe(x), - SetAuraBuiltin::Strobe(x) => AuraModes::Strobe(x), - SetAuraBuiltin::Rainbow(x) => AuraModes::Rainbow(x), - SetAuraBuiltin::Star(x) => AuraModes::Star(x), - SetAuraBuiltin::Rain(x) => AuraModes::Rain(x), - SetAuraBuiltin::Highlight(x) => AuraModes::Highlight(x), - SetAuraBuiltin::Laser(x) => AuraModes::Laser(x), - SetAuraBuiltin::Ripple(x) => AuraModes::Ripple(x), - SetAuraBuiltin::Pulse(x) => AuraModes::Pulse(x), - SetAuraBuiltin::Comet(x) => AuraModes::Comet(x), - SetAuraBuiltin::Flash(x) => AuraModes::Flash(x), - SetAuraBuiltin::MultiStatic(x) => AuraModes::MultiStatic(x), - SetAuraBuiltin::MultiBreathe(x) => AuraModes::MultiBreathe(x), - } + (&mode).into() } } impl From<&SetAuraBuiltin> for AuraModes { fn from(mode: &SetAuraBuiltin) -> Self { - mode.clone().into() + match mode { + SetAuraBuiltin::Static(x) => AuraModes::Static(x.clone()), + SetAuraBuiltin::Breathe(x) => AuraModes::Breathe(x.clone()), + SetAuraBuiltin::Strobe(x) => AuraModes::Strobe(x.clone()), + SetAuraBuiltin::Rainbow(x) => AuraModes::Rainbow(x.clone()), + SetAuraBuiltin::Star(x) => AuraModes::Star(x.clone()), + SetAuraBuiltin::Rain(x) => AuraModes::Rain(x.clone()), + SetAuraBuiltin::Highlight(x) => AuraModes::Highlight(x.clone()), + SetAuraBuiltin::Laser(x) => AuraModes::Laser(x.clone()), + SetAuraBuiltin::Ripple(x) => AuraModes::Ripple(x.clone()), + SetAuraBuiltin::Pulse(x) => AuraModes::Pulse(x.clone()), + SetAuraBuiltin::Comet(x) => AuraModes::Comet(x.clone()), + SetAuraBuiltin::Flash(x) => AuraModes::Flash(x.clone()), + SetAuraBuiltin::MultiStatic(x) => AuraModes::MultiStatic(x.clone()), + SetAuraBuiltin::MultiBreathe(x) => AuraModes::MultiBreathe(x.clone()), + } } }