Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!mcvax!ukc!pc From: pc@ukc.ac.uk (R.P.A.Collinson) Newsgroups: comp.sys.atari.st Subject: MWC bug with structure assignment Message-ID: <2329@eagle.ukc.ac.uk> Date: Tue, 30-Dec-86 15:21:49 EST Article-I.D.: eagle.2329 Posted: Tue Dec 30 15:21:49 1986 Date-Received: Wed, 31-Dec-86 03:51:16 EST Reply-To: pc@ukc.ac.uk (R.P.A.Collinson) Organization: U of Kent at Canterbury, Canterbury, UK Lines: 43 On the whole MWC implements structure assignment correctly. However I have found that an attempt to pass the result of a function returning a structure into a routine as a parameter fails. Perhaps a little example will make this clearer. typedef struct { short x; short y; } Point; main() { Point pt; Point Pt(); pt = Pt(100, 200) print_pt(pt); /* works */ print_pt(Pt(100, 200)); /* fails */ } Point Pt(x, y) short x, y; { Point re; re.x = x; re.y = y; return(re); } print_pt(pt) Point pt; { printf("x = %d, y %d\n", pt.x, pt.y); } In the fail case, a pointer to a static(?) area gets passed into the code and is not dealt with correctly. I guess this is a case of `me need compiler fix' unless someone else has a fix? This bug means that I cannot port a whole bunch of code using Points and Rectangles using MWC. PS. I am annoyed that I always seem to act as an unpaid compiler debugger for the various commercial C compilers around.