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