PR# 19636 STRING_32.hash_code may have negative values
Problem Report Summary
Submitter: gobobe
Category: EiffelBase
Priority: Medium
Date: 2020/04/15
Class: Bug
Severity: Non-critical
Number: 19636
Release: 20.03.10.3992
Confidential: No
Status: Analyzed
Responsible:
Environment: win
Synopsis: STRING_32.hash_code may have negative values
Description
When using invalid Unicode characters in STRING_32, the hash code may be negative. For example:
local
s: STRING_32
do
create s.make (1)
s.append_character ({NATURAL_32}.max_value.to_character_32)
print (s.hash_code)
prints -1. But the postcondition of `hash_code`says:
good_hash_value: Result >= 0
In the Gobo libraries, the following pattern is used:
Result := some_value_which_may_be_nagetive
if Result < 0 then
Result := -(Result + 1)
end
--
Eric Bezault
To Reproduce
Problem Report Interactions