🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

2 total messages Started by Tom Vijlbrief Thu, 29 Jun 1989 09:38
Two more patches for ET++
#22
Author: Tom Vijlbrief
Date: Thu, 29 Jun 1989 09:38
78 lines
2751 bytes
Here are two more patches to make ET++ work with g++:

In Object.C add the ifdef to solve a compiler bug:
Bug discovered when compiling miniedit and draw. These work
perfectly now!!
===========================

void Object::FlushChanges()
{
    Collection *col= (Collection*) DelayedChanges.AtKey(this);
    if (col) {
        ObjInt *ref= (ObjInt*)col->At(0);
        if (ref->GetValue() == 0) {
            flags &= ~cObjDelayChanges;
            ChangeMessage *cm;
            Iter next(col);
            next(); // overread reference count
            while (cm= (ChangeMessage*) next())
                ChangedWhat(cm->GetWhat());
            col->FreeAll();
#ifdef __GNUG__
            Collection *tmpcol= (Collection*)DelayedChanges.RemoveKey(this);
            delete tmpcol;
#else
            delete DelayedChanges.RemoveKey(this);
#endif
        }
        else
            (*ref)--;
    }
}

============================
In the 'C' file sunwindow.c a function is called
with the wrong number of parameters.
Isn't C++ great!  :-)
=================================

static void PolyDot(port, pr, dx, dy, pts, n, pattern, mode, psz)
register struct SunWindowPort *port;
register struct pixrect *pr;
register int n;
int dx, dy, pattern, mode, psz;
register struct pr_pos *pts;
{
    register int i, x, y;
    register struct pr_pos *p;
    register struct pixrect *patpr, *penpr= 0;
    int oox, ooy, rop, Mode;

    rop= PolyTab[mode][pat2ix(pattern)].rop;
    if (psz <= 1)
        Mode= PolyTab[mode][pat2ix(pattern)].mode11;
    else {
        if (psz > 2 && psz < MAXPENS) {
            if (pens[psz] == 0)
                pens[psz]= MakePen(psz);
            penpr= pens[psz];
        }
        Mode= PolyTab[mode][pat2ix(pattern)].modeNN;
    }
#ifdef __GNUC__
    patpr= GetPattern(pattern,dx,dy);
#else
    patpr= GetPattern(pattern);
#endif
 
    if (pr) {
        if (penpr)
=======================================
===============================================================================
Tom Vijlbrief
TNO Institute for Perception
P.O. Box 23				Phone: +31 34 63 562 11
3769 ZG  Soesterberg			E-mail: tnosoes!tom@mcvax.cwi.nl
The Netherlands				    or:	uunet!mcvax!tnosoes!tom
===============================================================================
Re: Two more patches for ET++ (4 more patches)
#23
Author: Tom Vijlbrief
Date: Fri, 30 Jun 1989 12:32
98 lines
3036 bytes
Four more double expression evaluation compilerbugs.

System.C:
=============================================
static void RemoveDeleted(ObjList *ol)
{
    if (ol->Size() <= 0)
	return;
    Iter next(ol);
    register SysEvtHandler *eh;
    
    while (eh= (SysEvtHandler*) next())
	if (eh->ShouldRemove())
#ifdef __GNUG__
	    { ObjPtr tmpp= ol->RemovePtr(eh); delete tmpp; }
#else
	    delete ol->RemovePtr(eh);
#endif
}
=============================================
Alert.C
===========================================

int Alert::Show(char* fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    int ret;

    if (image->IsKindOf(Cluster))
	((Cluster*)image)->SetModified();
    char *buf= strvprintf(fmt, ap);
    if (gWinInit) {
#ifdef __GNUG__
	{ Text *tmpp= ((StaticTextView*)text)->SetText(new StyledText(gSysFont, buf));
	  delete tmpp;
	}
#else
	delete ((StaticTextView*)text)->SetText(new StyledText(gSysFont, buf));
#endif
	// GetWindow()->contentRect.extent= gPoint0;
	CalcLayout(FALSE);
	ret= Dialog::Show();
    } else {
====================================================
Mark.C (near line 140)
=======================================================
	    else if (at < m->pos && at + n >= m->pos + m->len) {
		m->state = eStateDeleted;
		m->len = 0;
		m->pos = at;
		m->ChangedWhat((void*) eMarkDeleted);
		if (doRemove)
#ifdef __GNUG__
		    { ObjPtr tmpp= Remove(m); delete tmpp; }
#else
		    delete Remove(m);
#endif
	    }

	    // ^ | ^  |
	    else if (at < m->pos && at + n > m->pos) {
		m->len = m->pos+m->len - (at +n); 
===============================================================================
CodeTextView.C (two times)
=======================================================
	}
	prevCh= c;
    }
#ifdef __GNUG__
    TextRunArray *tmpp= stext->SetStyles(st); delete tmpp;
#else
    delete stext->SetStyles(st);
#endif
}

void CodeTextView::SetDefaultStyle()
{
    if (!text->IsKindOf(StyledText)) 
	return;
    StyledText *stext= (StyledText*)text;
    TextRunArray *st= new TextRunArray(stext);
    st->Insert(plainStyle, 0, 0, stext->Size());
#ifdef __GNUG__
    TextRunArray *tmpp= stext->SetStyles(st); delete tmpp;
#else
    delete stext->SetStyles(st);
#endif
}

=================================================
Tom Vijlbrief
TNO Institute for Perception
P.O. Box 23				Phone: +31 34 63 562 11
3769 ZG  Soesterberg			E-mail: tnosoes!tom@mcvax.cwi.nl
The Netherlands				    or:	uunet!mcvax!tnosoes!tom
===============================================================================
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads