Bug in class READABLE_STRING_8
Wolfgang Jansen <[email protected]> Thu, 24 Nov 2016 23:51:23 +0100
| Newsgroups | gmane.comp.lang.eiffel.gobo.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--===============7220847263527189034==
Content-Type: multipart/alternative;
boundary="------------F97CFAC80FB19F52E749BBF7"
This is a multi-part message in MIME format.
--------------F97CFAC80FB19F52E749BBF7
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by smtpa.mediabeam.com id
uAOMpQ7Z008862
Hi Eric,
I found an fatal error in routine READABLE_STRING_8.copy if the argument=20
is a non-void but empty string. The origin text is as follows:
copy (other: like Current)
-- Reinitialize by copying the characters of `other'.
-- (This is also used by `twin'.)
local
old_area: like area
do
if other /=3D Current then
old_area :=3D area
standard_copy (other)
-- Note: <=3D is needed as all Eiffel string should=20
have an
-- extra character to insert null character at the e=
nd.
if old_area =3D Void or else old_area =3D other.area or=20
else old_area.count <=3D count then
-- Prevent copying of large `area' if only a=20
few characters are actually used.
area :=3D area.resized_area (count + 1)
else
old_area.copy_data (area, 0, 0, count)
area :=3D old_area
end
internal_hash_code :=3D 0
end
ensure then
new_result_count: count =3D other.count
-- same_characters: For every `i' in 1..`count', `item'=20
(`i') =3D `other'.`item' (`i')
end
If the string to copy is empty, i.e. `old_area=3DVoid' then `area' is=20
void, too,
after `standard_copy'. Then branch `if old_area=3DVoid or else ...' leads=
=20
to instruction `area :=3D area.resized_area (count + 1)' that must crash.=
=20
I propose the following modification (it works fine for me):
copy (other: like Current)
-- Reinitialize by copying the characters of `other'.
-- (This is also used by `twin'.)
local
old_area: like area
do
if other /=3D Current then
old_area :=3D area
standard_copy (other)
-- Note: <=3D is needed as all Eiffel string should=20
have an
-- extra character to insert null character at the e=
nd.
if old_area =3D Void then
elseif old_area =3D other.area or else old_area.count <=3D=
=20
count then
-- Prevent copying of large `area' if only a=20
few characters are actually used.
area :=3D area.resized_area (count + 1)
else
old_area.copy_data (area, 0, 0, count)
area :=3D old_area
end
internal_hash_code :=3D 0
end
ensure then
new_result_count: count =3D other.count
-- same_characters: For every `i' in 1..`count', `item'=20
(`i') =3D `other'.`item' (`i')
end
I do not know whether the bug is already in ISE's distribution of the=20
class.
Best regards
Wolfgang
--=20
Dr. Wolfgang Jansen
Lauenburger Stra=C3=9Fe 40
D-12169 Berlin
Tel: (+49) 0172 40 86 916
e-mail: [email protected]
--------------F97CFAC80FB19F52E749BBF7
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64
X-MIME-Autoconverted: from 8bit to base64 by smtpa.mediabeam.com id
uAOMpQ7Z008862
PGh0bWw+DQogIDxoZWFkPg0KDQogICAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPg0KICA8L2hlYWQ+DQogIDxi
b2R5IGFsaW5rPSIjRUUwMDAwIiBiZ2NvbG9yPSIjZmZmZmZmIiBsaW5rPSIjMEI2Q0RBIiB0
ZXh0PSIjMDAwMDAwIg0KICAgIHZsaW5rPSIjNTUxQThCIj4NCiAgICA8cD48Zm9udCBmYWNl
PSJEZWphVnUgU2FucyBNb25vIj5IaSBFcmljLCA8YnI+DQogICAgICA8L2ZvbnQ+PC9wPg0K
ICAgIDxwPjxmb250IGZhY2U9IkRlamFWdSBTYW5zIE1vbm8iPkkgZm91bmQgYW4gZmF0YWwg
ZXJyb3IgaW4gcm91dGluZQ0KICAgICAgICBSRUFEQUJMRV9TVFJJTkdfOC5jb3B5IGlmIHRo
ZSBhcmd1bWVudCBpcyBhIG5vbi12b2lkIGJ1dCBlbXB0eQ0KICAgICAgICBzdHJpbmcuIFRo
ZSBvcmlnaW4gdGV4dCBpcyBhcyBmb2xsb3dzOjwvZm9udD48L3A+DQogICAgPHA+PGZvbnQg
ZmFjZT0iRGVqYVZ1IFNhbnMgTW9ubyI+wqDCoMKgIGNvcHkgKG90aGVyOiBsaWtlIEN1cnJl
bnQpPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCAtLSBSZWluaXRpYWxpemUg
YnkgY29weWluZyB0aGUgY2hhcmFjdGVycyBvZg0KICAgICAgICBgb3RoZXInLjxicj4NCiAg
ICAgICAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgLS0gKFRoaXMgaXMgYWxzbyB1c2VkIGJ5IGB0
d2luJy4pPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIGxvY2FsPGJyPg0KICAgICAgICDC
oMKgwqAgwqDCoMKgIMKgwqDCoCBvbGRfYXJlYTogbGlrZSBhcmVhPGJyPg0KICAgICAgICDC
oMKgwqAgwqDCoMKgIGRvPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCBpZiBv
dGhlciAvPSBDdXJyZW50IHRoZW48YnI+DQogICAgICAgIMKgwqDCoCDCoMKgwqAgwqDCoMKg
IMKgwqDCoCBvbGRfYXJlYSA6PSBhcmVhPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIMKg
wqDCoCDCoMKgwqAgc3RhbmRhcmRfY29weSAob3RoZXIpPGJyPg0KICAgICAgICDCoMKgwqAg
wqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIC0tIE5vdGU6ICZsdDs9IGlzIG5lZWRlZCBh
cyBhbGwgRWlmZmVsDQogICAgICAgIHN0cmluZyBzaG91bGQgaGF2ZSBhbjxicj4NCiAgICAg
ICAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCAtLSBleHRyYSBjaGFyYWN0
ZXIgdG8gaW5zZXJ0IG51bGwgY2hhcmFjdGVyDQogICAgICAgIGF0IHRoZSBlbmQuPGJyPg0K
ICAgICAgICA8Zm9udCBjb2xvcj0iI2ZmMDAwMCI+wqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDC
oMKgIGlmIG9sZF9hcmVhID0gVm9pZCBvciBlbHNlDQogICAgICAgICAgb2xkX2FyZWEgPSBv
dGhlci5hcmVhIG9yIGVsc2Ugb2xkX2FyZWEuY291bnQgJmx0Oz0gY291bnQgdGhlbjxicj4N
CiAgICAgICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCAt
LSBQcmV2ZW50IGNvcHlpbmcgb2YgbGFyZ2UgYGFyZWEnIGlmDQogICAgICAgICAgb25seSBh
IGZldyBjaGFyYWN0ZXJzIGFyZSBhY3R1YWxseSB1c2VkLjxicj4NCiAgICAgICAgICDCoMKg
wqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIGFyZWEgOj0gYXJlYS5yZXNpemVkX2Fy
ZWEgKGNvdW50ICsgMSk8YnI+DQogICAgICAgIDwvZm9udD7CoMKgwqAgwqDCoMKgIMKgwqDC
oCDCoMKgwqAgZWxzZTxicj4NCiAgICAgICAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKg
IMKgwqDCoCBvbGRfYXJlYS5jb3B5X2RhdGEgKGFyZWEsIDAsIDAsIGNvdW50KTxicj4NCiAg
ICAgICAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCBhcmVhIDo9IG9sZF9h
cmVhPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgZW5kPGJyPg0K
ICAgICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgaW50ZXJuYWxfaGFzaF9jb2Rl
IDo9IDA8YnI+DQogICAgICAgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIGVuZDxicj4NCiAgICAg
ICAgwqDCoMKgIMKgwqDCoCBlbnN1cmUgdGhlbjxicj4NCiAgICAgICAgwqDCoMKgIMKgwqDC
oCDCoMKgwqAgbmV3X3Jlc3VsdF9jb3VudDogY291bnQgPSBvdGhlci5jb3VudDxicj4NCiAg
ICAgICAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgLS0gc2FtZV9jaGFyYWN0ZXJzOiBGb3IgZXZl
cnkgYGknIGluIDEuLmBjb3VudCcsDQogICAgICAgIGBpdGVtJyAoYGknKSA9IGBvdGhlcicu
YGl0ZW0nIChgaScpPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIGVuZDxicj4NCiAgICAg
IDwvZm9udD48L3A+DQogICAgPHA+PGZvbnQgZmFjZT0iRGVqYVZ1IFNhbnMgTW9ubyI+PGJy
Pg0KICAgICAgPC9mb250PjwvcD4NCiAgICA8cD48Zm9udCBmYWNlPSJEZWphVnUgU2FucyBN
b25vIj5JZiB0aGUgc3RyaW5nIHRvIGNvcHkgaXMgZW1wdHksDQogICAgICAgIGkuZS4gYG9s
ZF9hcmVhPVZvaWQnIHRoZW4gYGFyZWEnIGlzIHZvaWQsIHRvbywgPGJyPg0KICAgICAgICBh
ZnRlciBgc3RhbmRhcmRfY29weScuIFRoZW4gYnJhbmNoIGBpZiBvbGRfYXJlYT1Wb2lkIG9y
IGVsc2UNCiAgICAgICAgLi4uJyBsZWFkcyB0byBpbnN0cnVjdGlvbiBgYXJlYSA6PSBhcmVh
LnJlc2l6ZWRfYXJlYSAoY291bnQgKw0KICAgICAgICAxKScgdGhhdCBtdXN0IGNyYXNoLiBJ
IHByb3Bvc2UgdGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb24gKGl0DQogICAgICAgIHdvcmtz
IGZpbmUgZm9yIG1lKTo8YnI+DQogICAgICA8L2ZvbnQ+PC9wPg0KICAgIDxwPjxmb250IGZh
Y2U9IkRlamFWdSBTYW5zIE1vbm8iPjxicj4NCiAgICAgIDwvZm9udD48L3A+DQogICAgPHA+
PGZvbnQgZmFjZT0iRGVqYVZ1IFNhbnMgTW9ubyI+wqDCoMKgIGNvcHkgKG90aGVyOiBsaWtl
IEN1cnJlbnQpPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCAtLSBSZWluaXRp
YWxpemUgYnkgY29weWluZyB0aGUgY2hhcmFjdGVycyBvZg0KICAgICAgICBgb3RoZXInLjxi
cj4NCiAgICAgICAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgLS0gKFRoaXMgaXMgYWxzbyB1c2Vk
IGJ5IGB0d2luJy4pPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIGxvY2FsPGJyPg0KICAg
ICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCBvbGRfYXJlYTogbGlrZSBhcmVhPGJyPg0KICAg
ICAgICDCoMKgwqAgwqDCoMKgIGRvPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIMKgwqDC
oCBpZiBvdGhlciAvPSBDdXJyZW50IHRoZW48YnI+DQogICAgICAgIMKgwqDCoCDCoMKgwqAg
wqDCoMKgIMKgwqDCoCBvbGRfYXJlYSA6PSBhcmVhPGJyPg0KICAgICAgICDCoMKgwqAgwqDC
oMKgIMKgwqDCoCDCoMKgwqAgc3RhbmRhcmRfY29weSAob3RoZXIpPGJyPg0KICAgICAgICDC
oMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIC0tIE5vdGU6ICZsdDs9IGlzIG5l
ZWRlZCBhcyBhbGwgRWlmZmVsDQogICAgICAgIHN0cmluZyBzaG91bGQgaGF2ZSBhbjxicj4N
CiAgICAgICAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCAtLSBleHRyYSBj
aGFyYWN0ZXIgdG8gaW5zZXJ0IG51bGwgY2hhcmFjdGVyDQogICAgICAgIGF0IHRoZSBlbmQu
PGJyPg0KICAgICAgICA8Zm9udCBjb2xvcj0iI2ZmMDAwMCI+wqDCoMKgIMKgwqDCoCDCoMKg
wqAgwqDCoMKgIGlmIG9sZF9hcmVhID0gVm9pZCB0aGVuPGJyPg0KICAgICAgICAgIMKgwqDC
oCDCoMKgwqAgwqDCoMKgIMKgwqDCoCBlbHNlaWYgb2xkX2FyZWEgPSBvdGhlci5hcmVhIG9y
IGVsc2UNCiAgICAgICAgICBvbGRfYXJlYS5jb3VudCAmbHQ7PSBjb3VudCB0aGVuPGJyPg0K
ICAgICAgICAgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIC0t
IFByZXZlbnQgY29weWluZyBvZiBsYXJnZSBgYXJlYScgaWYNCiAgICAgICAgICBvbmx5IGEg
ZmV3IGNoYXJhY3RlcnMgYXJlIGFjdHVhbGx5IHVzZWQuPGJyPg0KICAgICAgICAgIMKgwqDC
oCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgYXJlYSA6PSBhcmVhLnJlc2l6ZWRfYXJl
YSAoY291bnQgKyAxKTxicj4NCiAgICAgICAgPC9mb250PsKgwqDCoCDCoMKgwqAgwqDCoMKg
IMKgwqDCoCBlbHNlPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAg
wqDCoMKgIG9sZF9hcmVhLmNvcHlfZGF0YSAoYXJlYSwgMCwgMCwgY291bnQpPGJyPg0KICAg
ICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIGFyZWEgOj0gb2xkX2Fy
ZWE8YnI+DQogICAgICAgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCBlbmQ8YnI+DQog
ICAgICAgIMKgwqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCBpbnRlcm5hbF9oYXNoX2NvZGUg
Oj0gMDxicj4NCiAgICAgICAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgZW5kPGJyPg0KICAgICAg
ICDCoMKgwqAgwqDCoMKgIGVuc3VyZSB0aGVuPGJyPg0KICAgICAgICDCoMKgwqAgwqDCoMKg
IMKgwqDCoCBuZXdfcmVzdWx0X2NvdW50OiBjb3VudCA9IG90aGVyLmNvdW50PGJyPg0KICAg
ICAgICDCoMKgwqAgwqDCoMKgIMKgwqDCoCAtLSBzYW1lX2NoYXJhY3RlcnM6IEZvciBldmVy
eSBgaScgaW4gMS4uYGNvdW50JywNCiAgICAgICAgYGl0ZW0nIChgaScpID0gYG90aGVyJy5g
aXRlbScgKGBpJyk8YnI+DQogICAgICAgIMKgwqDCoCDCoMKgwqAgZW5kPGJyPg0KICAgICAg
PC9mb250PjwvcD4NCiAgICA8cD48Zm9udCBmYWNlPSJEZWphVnUgU2FucyBNb25vIj48YnI+
DQogICAgICA8L2ZvbnQ+PC9wPg0KICAgIDxwPjxmb250IGZhY2U9IkRlamFWdSBTYW5zIE1v
bm8iPkkgZG8gbm90IGtub3cgd2hldGhlciB0aGUgYnVnIGlzDQogICAgICAgIGFscmVhZHkg
aW4gSVNFJ3MgZGlzdHJpYnV0aW9uIG9mIHRoZSBjbGFzcy4gPGJyPg0KICAgICAgPC9mb250
PjwvcD4NCiAgICA8cD48Zm9udCBmYWNlPSJEZWphVnUgU2FucyBNb25vIj5CZXN0IHJlZ2Fy
ZHM8YnI+DQogICAgICAgIFdvbGZnYW5nPC9mb250Pjxicj4NCiAgICAgIDxmb250IGZhY2U9
IkRlamFWdSBTYW5zIE1vbm8iPjwvZm9udD48L3A+DQogICAgPHByZSBjbGFzcz0ibW96LXNp
Z25hdHVyZSIgY29scz0iNzIiPi0tIA0KRHIuIFdvbGZnYW5nIEphbnNlbg0KTGF1ZW5idXJn
ZXIgU3RyYcOfZSA0MA0KRC0xMjE2OSBCZXJsaW4NCg0KVGVsOiAoKzQ5KSAwMTcyIDQwIDg2
IDkxNg0KZS1tYWlsOiA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVm
PSJtYWlsdG86d28uamFuc2VuQGthYmVsbWFpbC5kZSI+d28uamFuc2VuQGthYmVsbWFpbC5k
ZTwvYT48L3ByZT4NCiAgPC9ib2R5Pg0KPC9odG1sPg0K
--------------F97CFAC80FB19F52E749BBF7--
--===============7220847263527189034==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
------------------------------------------------------------------------------
--===============7220847263527189034==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
gobo-eiffel-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gobo-eiffel-develop
--===============7220847263527189034==--