andrew@cuenews.UUCP (Andrew Folkins) (10/23/90)
According to the docs (Preface pg. xv), the limit on parameters to a #pragma call has been raised to 14, "allowing ALL Amiga library functions to be called with parameters in registers." Except that when I used the #pragma for NewModifyProp(), lc2 gurus (tb reports foo.0000000b). Take out the pragma, and it compiles fine. Has anyone else run into this? ============================== cut here ==================================== /* * compile with: lc test.c */ #include <exec/types.h> #include <intuition/intuition.h> #include <proto/intuition.h> struct ExtPropInfo { struct PropInfo pi; UWORD Overlap, /* Amount of overlap between successive views */ TotalLines, VisibleLines, TopLine; }; void SetPropPosition(window, gadget, topline, refresh) struct Window *window; struct Gadget *gadget; UWORD topline; short refresh; { UWORD hidden; struct ExtPropInfo *epi; epi = (struct ExtPropInfo *)gadget->SpecialInfo; /* Don't have to update imagery */ if (epi->TopLine == topline && !refresh) return; epi->TopLine = topline; /* Find the number of hidden lines */ hidden = max(epi->TotalLines - epi->VisibleLines, 0); /* If we can't fill the last display, reduce TopLine */ if (epi->TopLine > hidden) epi->TopLine = hidden; if (hidden > 0) epi->pi.VertBody = (UWORD)((ULONG)(epi->VisibleLines - epi->Overlap) * MAXBODY / (epi->TotalLines - epi->Overlap)); else epi->pi.VertBody = MAXBODY; if (hidden > 0) epi->pi.VertPot = (UWORD)(((ULONG)epi->TopLine * MAXPOT) / hidden); else epi->pi.VertPot = 0; if (window) NewModifyProp(gadget, window, NULL, epi->pi.Flags, 0, epi->pi.VertPot, 0, epi->pi.VertBody, 1); } ============================== and here ==================================== -- Andrew Folkins ...!alberta!edm!cuenews!andrew Edmonton, Alberta, Canada ^A1000^ Newsfeed for the Amiga SIG of the Commodore Users of Edmonton (AmiCUE)
walker@unx.sas.com (Doug Walker) (11/07/90)
In article <1364.AA1364@cuenews> andrew@cuenews.UUCP (Andrew Folkins) writes: >According to the docs (Preface pg. xv), the limit on parameters to a >#pragma call has been raised to 14, "allowing ALL Amiga library functions >to be called with parameters in registers." Except that when I used >the #pragma for NewModifyProp(), lc2 gurus (tb reports foo.0000000b). >Take out the pragma, and it compiles fine. Has anyone else run into this? > > NewModifyProp(gadget, window, NULL, epi->pi.Flags, > 0, epi->pi.VertPot, 0, epi->pi.VertBody, 1); This is a bug in the 5.10 version of the compiler. The compiler will crash if fed an ODD CONSTANT to a #pragma routine taking more than 8 parameters. You can get around it by changing the code to > { int tmpint = 1; > NewModifyProp(gadget, window, NULL, epi->pi.Flags, > 0, epi->pi.VertPot, 0, epi->pi.VertBody, tmpint); > } We apologize for the bug and will fix it in the next maintenance release. (Please feel free to call SAS/C tech support at (919)677-8009 to report this kind of problem - that's what they are there for. ) ***** =*|_o_o|\\=====Doug Walker, Software Distiller====== BBS: (919)460-7430 = *|. o.| || 1200/2400/9600 Dual | o |// For all you do, this bug's for you! ====== usenet: ...mcnc!rti!sas!walker plink: dwalker bix: djwalker