>>>>> thus on Tue, 7 Jul 1998 02:11:04 +0200, Erwin wrote: > On Mon, 6 Jul 1998, Dean Takemori wrote: >> A pointer to 0 bytes? Yikes. I was curious to see what happens >> when you malloc(0) on Solaris. Turns out Sun's library does >> indeed return a non-NULL pointer. Did some more playing around >> and discovered that malloc(-100) also returns a non-NULL pointer, >> which can even be used! (It trashes random parts of memory.) > malloc() etc. take a size_t argument, which is unsigned (and represents > the result of a sizeof AFAIR). > gcc needs -Wunsigned to warn you about it (g++ luckily has it as > default). Isn't circle by default compiled with -Wall. -W by default as stated by gcc's man page notes: o An unsigned value is compared against zero with `>' or `<='. Although I have found that my SGI's compiler actually does this (it likes to warn profusely), and gcc 2.7.2.x does not. There is no -Wunsigned for gcc 2.7.2.X, although you may be able to duplicate this with several more spurious errors with -Wconversion. -Wconversion Warn if a prototype causes a type conversion that is different from what would happen to the same ar- gument in the absence of a prototype. This in- cludes conversions of fixed point to floating and vice versa, and conversions changing the width or signedness of a fixed point argument except when the same as the default promotion. It may work. > -100 cast to size_t is... a lot. It's strange that this malloc at all > succeeded. I suppose something in the malloc routines then overflowed when > given such a large number. Quite a few programmers make wrappers for malloc to one: assert(3) that requested length is > 0, and if the return is non-null. Quite of few public libs do a malloc or die implementation. d. +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST