From 596420cd1fe767d0c4782acc6aa64e52afe023fb Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Thu, 10 Jun 2010 11:32:32 -0500 Subject: [PATCH] generate better hex ids for manually created badly formed guids --- lib/WebGUI/Session/Id.pm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/WebGUI/Session/Id.pm b/lib/WebGUI/Session/Id.pm index b8d31d72c..2bb3bfe0c 100644 --- a/lib/WebGUI/Session/Id.pm +++ b/lib/WebGUI/Session/Id.pm @@ -145,7 +145,7 @@ sub session { =head2 toHex ( guid ) -Returns the hex value of a guid +Returns the hex value of a guid. For all GUIDs generated by the generate method, the return value will be 32 characters long. For some manually created invalid GUIDs, it may be 33 characters long. =head3 guid @@ -154,11 +154,13 @@ guid to convert to hex value. =cut sub toHex { - my $self = shift; + my $self = shift; my $id = shift; $id =~ tr{_-}{+/}; - my $bin_id = decode_base64("$id=="); - my $hex_id = sprintf('%*v02x', '', $bin_id); + $id .= 'AA'; + my $bin_id = decode_base64($id); + my $hex_id = unpack("H*", $bin_id); + $hex_id =~ s/0{3,4}$//; return $hex_id }