public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Nicolas Frey <n.frey@proxmox.com>
To: Thomas Lamprecht <t.lamprecht@proxmox.com>,
	Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH pve-common] cli: fix #6762: only copy properties if defined
Date: Tue, 7 Oct 2025 17:13:38 +0200	[thread overview]
Message-ID: <844b9432-b795-45d3-9870-8ac37ad52148@proxmox.com> (raw)
In-Reply-To: <920a868c-06ba-4192-9b8b-eb0b55cacac5@proxmox.com>


On 10/7/25 4:46 PM, Thomas Lamprecht wrote:
> Am 07.10.25 um 15:56 schrieb Nicolas Frey:
>> Adds a defined check to the copy, as to not result in the bugfixes
>> reported error when double tabbing on `pveceph status`.
> Feel encouraged to include errors in verbatim in commit message,
> while we own bugzilla.proxmox.com and thus it's unlikely that it
> will be gone without notice or migration it's still always nice to
> keep git commits self-sufficient w.r.t core information. Makes it
> also easier to find a commit if one just searches for the error
> message.
> 

OK, will do in the future. Thanks for letting me know!

>>
>> Fixes: https://bugzilla.proxmox.com/show_bug.cgi?id=6762
>> Signed-off-by: Nicolas Frey <n.frey@proxmox.com>
>> ---
>>  src/PVE/CLIHandler.pm | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/PVE/CLIHandler.pm b/src/PVE/CLIHandler.pm
>> index 89cb7b7..cdd71c7 100644
>> --- a/src/PVE/CLIHandler.pm
>> +++ b/src/PVE/CLIHandler.pm
>> @@ -455,7 +455,8 @@ my $print_bash_completion = sub {
>>  
>>      my $info = $class->map_method_by_name($name);
>>  
>> -    my $prop = { %{ $info->{parameters}->{properties} } }; # copy
>> +    my $prop = { %{ $info->{parameters}->{properties} } }
>> +        if defined $info->{parameters}->{properties}; # copy
> 
> You cannot know without having lots of perl experience, or having had
> the bad luck of debugging this yourself early on, but a conditional
> declaration of a variable is Real Bad™ perl, as it will retain the
> value of the last time the condition held true for the case it's false
> now.
> 

TIL another weird quirk about perl. Thanks for pointing it out and
saving me from needing to debug this!

Will send a v2 momentarily.

> See the NOTE at the end of the "Statement Modifiers" [0] section for
> details.
> 
> [0]: https://perldoc.perl.org/perlsyn#Statement-Modifiers
> 
> Safe alternatives are:
> 
> my $prop;
> $prop = { $info->{parameters}->{properties}->%* } if defined($info->{parameters}->{properties});
> 
> Similar, but with normal if block, which can be combined with adding a
> intermediate variable.
> 
> my $prop;
> if (defined(my $properties = $info->{parameters}->{properties})) {
>     $prop = { $properties->%* }; # clone
> }
> 
> Alternatively, one can use a intermediate variable + a fallback value
> 
> my $parameter_properties = $info->{parameters}->{properties} // {};
> my $prop = { $parameter_properties->%* }; # copy
> 
> Alternatively, one can use a ternary statement:
> 
> $prop = defined($info->{parameters}->{properties})
>  ? { $info->{parameters}->{properties}->%* }
>  : {};
> 
> The last one is IMO a bit long here.
> 
> 
>>      $prop = { %$prop, %$formatter_properties } if $formatter_properties;
>>  
>>      my $print_parameter_completion = sub {
> 



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

  reply	other threads:[~2025-10-07 15:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-07 13:56 Nicolas Frey
2025-10-07 14:47 ` Thomas Lamprecht
2025-10-07 15:13   ` Nicolas Frey [this message]
2025-10-07 15:18 ` Nicolas Frey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=844b9432-b795-45d3-9870-8ac37ad52148@proxmox.com \
    --to=n.frey@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    --cc=t.lamprecht@proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal