libstdc++/97: allocator doesn't use operator new for allocation
David.Margery@irisa.fr
David.Margery@irisa.fr
Tue Oct 17 04:57:00 GMT 2000
>Number: 97
>Category: libstdc++
>Synopsis: allocator doesn't use operator new for allocation
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Oct 17 04:57:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: David Margery
>Release: unknown-1.0
>Organization:
>Environment:
linux g++ 2.95.2
>Description:
Iso standard requires allocate of std::allocator to use operator new for allocation (20.4.1.1, paragraph 3).
It isn't the case (or at least doesn't seem to be) in the version I use.
>How-To-Repeat:
run the program attached, and you will not get any message printed
>Fix:
replace calls to malloc() in the implementation of allocator by calls to operator new() (same interface)
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="newNotCalled.cxx"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="newNotCalled.cxx"
I2luY2x1ZGUgPG5ldz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5j
bHVkZSA8bWVtb3J5PgovL2ZpcnN0IHJlZGVmaW5lIGFsbGUgdmVyc2lvbiBvZiBuZXcgYW5kIGRl
bGV0ZSBhcyBhdXRob3JpemVkIGJ5IHRoZSBub3JtCmV4dGVybiAiQyIgdm9pZCAqbWFsbG9jIChz
aXplX3QpOwpleHRlcm4gIkMiIHZvaWQgZnJlZSAodm9pZCAqKTsKCnZvaWQgKm9wZXJhdG9yIG5l
dyAoc2l6ZV90IHNpemUpIHRocm93IChzdGQ6OmJhZF9hbGxvYykgewogICBjZXJyPDwiVXNpbmcg
b3VyIHZlcnNpb24gb2YgbmV3ICI8PGVuZGw7CiAgIHJldHVybiBtYWxsb2Moc2l6ZSk7Cn0KCnZv
aWQgKm9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKSB7
CiAgIHJldHVybiBvcGVyYXRvciBuZXcoc2l6ZSk7Cn0KCnZvaWQgKm9wZXJhdG9yIG5ldyAoc2l6
ZV90IHNpemUsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKSB7CiAgIHJldHVybiBvcGVy
YXRvciBuZXcoc2l6ZSk7Cn0KCnZvaWQgKm9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSwgY29u
c3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpIHsKICAgcmV0dXJuIG9wZXJhdG9yIG5ldyhzaXpl
KTsKfQoKdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQgKiBwdHIpIHRocm93KCkgewogICBjZXJy
PDwiVXNpbmcgb3VyIHZlcnNpb24gb2YgZnJlZSAiPDxlbmRsOwogICBmcmVlKHB0cik7Cn0KCnZv
aWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQgKiBwdHIpIHRocm93KCkgewogICBzdGQ6Om9wZXJh
dG9yIGRlbGV0ZShwdHIpOwp9Cgp2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqIHB0ciAsIGNv
bnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKSB7CiAgIHN0ZDo6b3BlcmF0b3IgZGVsZXRlKHB0
cik7Cn0KCnZvaWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQgKiBwdHIgLCBjb25zdCBzdGQ6Om5v
dGhyb3dfdCYpIHRocm93KCkgewogICBzdGQ6Om9wZXJhdG9yIGRlbGV0ZShwdHIpOwp9CgppbnQg
bWFpbihpbnQgYXJnYywgY2hhciBhcmd2W10pIHsKICAgdmVjdG9yPGludCxzdGQ6OmFsbG9jYXRv
cjxpbnQ+ID4gbXlWZWN0b3I7CiAgIC8vdGhpcyBjYWxsIHNob3VsZCBjYWxsIGFsbG9jYXRlIG9m
IGFsbG9jYXRvciwgd2ljaCBpbiB0cnVuIHNob3VsZCBjYWxsIG5ldz8KICAgbXlWZWN0b3IucHVz
aF9iYWNrKDEpOwogICByZXR1cm4gMDsKfQoKCgoK
More information about the Libstdc++-prs
mailing list