Article # 242, added by Geoworks, historical record
| first | previous | index | next | last |

BORLAND.C: Line 2491: assert(base == ((genptr)sos - scopeOff)) failed





BORLAND.C: Line 2491: assert(base == ((genptr)sos - scopeOff)) failed.

This error is caused by the symbol for a variable being in a
block that is not within the lexical scope of the variable.

The most probable culprit for this is a source file that is 
too large.  Try splitting the source into multiple files (this 
can also speed compilation as files that are unchanged between 
compilation do not need to be recompiled).

There is a description of how to split your source file up into
multiple files in the downloads section of the Geoworks web page
http://www.geoworks.com/devrel/download.htm

Some considerations when splitting up source code:
- The standard paradigm we use for multiple files under GOC is to have
  all object declarations in one file and then spread method code for
  individual classes into separate files.  
- GLUE does not create the links between objects if they are in
  seperate source files.  By keeping children in the same file as
  their parent (i.e., all objects that are statically connected should
  be in the same file) you don't have to use MSG_GEN_ADD_CHILD to
  dynamically link objects that should be linked, but were located in
  seperate source files. 


If the problem is not caused by an overly large source file, here are
some other possible reasons for the problem:
- if you are using a common variable name across multiple source files
- if you have defined an extra-ordinarily large number of variables
  within a given scope.  (Again, it's not clear how many is too many.)