Changeset 914 for cpp


Ignore:
Timestamp:
04/20/20 23:29:51 (5 years ago)
Author:
Maciej Komosinski
Message:

Param "single line" loader improved: misleading error message when parsing unnamed fields after a field with unrecognized name (typically, loading new genotypes by an older loader unaware of the current definitions of properties)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/param/param.cpp

    r883 r914  
    12951295                if (field_end == t)     // skip empty value
    12961296                {
    1297                         t++; i++;
     1297                        t++; if (i>=0) i++;
    12981298                        continue;
    12991299                }
     
    13101310                }
    13111311#ifdef WARN_MISSING_NAME
    1312                 else
     1312                else // no parameter name
     1313                        {
    13131314#ifdef SAVE_SELECTED_NAMES
    1314                         if ((i >= getPropCount()) || !(flags(i)&PARAM_CANOMITNAME))
     1315                        if ((i < 0) // field after unknown field
     1316                            || (i >= getPropCount()) // field after last field
     1317                            || !(flags(i)&PARAM_CANOMITNAME)) // valid field but it can't be skipped
    13151318#endif
    13161319                        {
    1317                                 if (id(i))
    1318                                         logPrintf("Param", "loadSingleLine", LOG_WARN, "Missing property name in '%s' (assuming '%s')", getName(), id(i));
    1319                                 else
     1320                                if (i < getPropCount())
     1321                                        logPrintf("Param", "loadSingleLine", LOG_WARN, "Missing property name in '%s'", getName());
     1322                                else // 'i' can go past PropCount because of moving to subsequent properties by i++, id(i) is then NULL
    13201323                                        logPrintf("Param", "loadSingleLine", LOG_WARN, "Value after the last property of '%s'", getName());
    13211324                        }
     1325                        }
     1326                //else skipping a skippable field
    13221327#endif
    1323                 if ((i >= 0) && id(i))
     1328                if ((i >= 0) && id(i)) // shared by name and skippped name cases
    13241329                {
    13251330                        value = t;
Note: See TracChangeset for help on using the changeset viewer.