bug-ddd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

DDD 3.3.10 (sparc-sun-solaris2.8) gets `Abort' signal


From: Ludger Theile
Subject: DDD 3.3.10 (sparc-sun-solaris2.8) gets `Abort' signal
Date: Fri, 05 Nov 2004 11:48:43 +0100

Hello,

while compiling the DDD Project i got compiler errors in cases when using 
the "?:"-operator with a combination of string and non-string objects like "".

After i made the beyond mentioned changes, the project compiles successfully.
But after the command

$make check

or after simple calling ddd, i get an assertion-abort.


Plattform:

Sun Solaris SunOS 5.8

Debugger:
dbx: WorkShop 5.0 12/18/98 [dbx 5.0]

Compiler:
CC: WorkShop Compilers 5.0 02/10/08 C++ 5.0 Patch 107311-19


Changes in DDD-3.3.10 by Ludger Theile,05.11.2004

/*************************************************************************/
/*************************************************************************/
/*                                                                       */
/*    Box.C                                                              */
/*                                                                       */
/*************************************************************************/

// Name of the TagBox at P
string Box::name(const BoxPoint& p) const
{
    const TagBox *t = findTag(p);
    string tmp("");
    return ((t) ? (t)->__name() : tmp);
}

// Information of the TagBox at P
string Box::info(const BoxPoint &p) const
{
    const TagBox *t = findTag(p);
    string tmp("");
    return ((t) ? (t)->__info() : tmp);
}

/*************************************************************************/
/*************************************************************************/


/*************************************************************************/
/*************************************************************************/
/*                                                                       */
/*    VSLDefList.h                                                       */
/*                                                                       */
/*************************************************************************/

    string f_name() const
    {
       string tmp(_func_name.from(1));
       return
          (_func_name[0] == '#') ?
          tmp:
          _func_name;
    }

/*************************************************************************/
/*************************************************************************/
/*                                                                       */
/*    comm-manag.C                                                       */
/*                                                                       */
/*************************************************************************/

static void extra_completed (StringArray& answers,
                             const VoidArray& /* qu_datas */,
                             void*  data)
{
   string tmp("");
   int count = answers.size();
   for (int i = 0; i < count; i++)
      filter_junk(answers[i]);

   ExtraData* extra_data = (ExtraData *)data;
   int qu_count = 0;
   string file;

   while (extra_data->n_init > 0)
   {
           // Handle output of initialization commands
           process_init((qu_count<count)?(answers[qu_count++]):tmp);
           extra_data->n_init--;
   }

   if (extra_data->refresh_recent_files)
   {
           // Clear undo buffer.  Do this before setting the initial line,
           // such that it becomes part of the history.
           undo_buffer.clear();
   }

   if (extra_data->refresh_initial_line)
   {
        switch (gdb->type())
        {
        case GDB:
        {
            string info_line;

            // Handle `info line' output
            string info_line1 = (qu_count<count)?(answers[qu_count++]):tmp;
            string list       = (qu_count<count)?(answers[qu_count++]):tmp;
            string info_line2 = (qu_count<count)?(answers[qu_count++]):tmp;

            // Skip initial message lines like `Reading symbols...'
            while (!list.empty() && !has_nr(list))
                    list = list.after('\n');

            if (atoi(list.chars()) == 0)
            {
                    // No listing => no source.
                    info_line = "";
            }
            else
            {
                    // Handle `info line' output
                    info_line = info_line1;
                    if (!info_line.contains("Line ", 0))
                       info_line = info_line2;
            }

            // Goto initial line
            source_view->process_info_line_main(info_line);
            find_some_source();
            break;
        }

        case XDB:
        {
            // Goto initial line
            source_view->process_info_line_main(answers[qu_count++]);
            find_some_source();
            break;
        }

        case BASH:
        case DBG:
        case DBX:
        case JDB:
        case PERL:
        case PYDB:
        {
       if (gdb->type() == DBX && gdb->isSunDBX())
            {
                    string list = (qu_count<count)?(answers[qu_count++]):tmp;
                    string line = (qu_count<count)?(answers[qu_count++]):tmp;

                    list = list.before('\n');
                    line = line.before('\n');

                    string pos = list + ":" + line;

                    source_view->process_info_line_main(pos);
               find_some_source();
                    source_view->lookup(pos, true);
            }
            // Clear caches and such
            string dummy = "";
            source_view->process_info_line_main(dummy);
            find_some_source();
            break;
        }
        }
   }

/*************************************************************************/
/*************************************************************************/
/*                                                                       */
/*    fonts.C                                                            */
/*                                                                       */
/*************************************************************************/

static void define_font(const AppData& ad,
                        const string& name, DDDFont base, 
                        const string& override = "")
{
    string font = make_font(ad, base, override);
    const string s1 = upcase(name);
    defineConversionMacro(s1.chars(), font.chars());
    font_defs[name] = font;

    if (ad.show_fonts)
    {
       string defstr("default");
            string symbol("@");
       
            const string sym =
               (name == MSTRING_DEFAULT_CHARSET) ?
               defstr :
               symbol + name;
            std::cout << sym << "\t" << font << "\n";
    }
}


/*************************************************************************/
/*************************************************************************/
/*                                                                       */
/*    BreakPoint.C                                                       */
/*                                                                       */
/*************************************************************************/

string BreakPoint::condition() const
{
   string tmp(real_condition().after(and_op()));
  return
    (is_false(real_condition())) ?
    tmp :
    real_condition();
}


/*************************************************************************/
/*************************************************************************/
/*                                                                       */
/*    GDBAgent.C                                                         */
/*                                                                       */
/*************************************************************************/

string GDBAgent::info_display_command() const
{
   string tmp("info display");
    return
      (type() == GDB || type() == BASH) ?
      tmp:
      display_command();
}

/*************************************************************************/
/*************************************************************************/
/*************************************************************************/
/*************************************************************************/




Mit freundlichen Grüßen


Ludger Theile



----------------------------------------------------------------------------

Huettenwerke Krupp-Mannesmann
CI-MV

Tel.: 0203/999-2589                            Ehingerstr. 200
Fax.: 0203/999-4416                            D-47259 Duisburg
E-mail: ludger.theile@hkm.de 
----------------------------------------------------------------------------


Attachment: LogDatei
Description: Binary data

Attachment: Ludger Theile.vcf
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]