tom@tnosoes.UUCP (Tom Vijlbrief) (06/29/89)
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 ===============================================================================
tom@tnosoes.UUCP (Tom Vijlbrief) (06/30/89)
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 ===============================================================================