No description
Find a file
Jeff Epler 1d01b831aa errordesc.cc: Correctly append a single character to a std::string
The idiom
    char c = ...;
    _userMsg.append( &c );
is not correct C++, because it treats the address of 'c' as a NUL-
terminated C string.  However, this is not guaranteed.

When building and testing on Debian Stretch with AddressSanitizer:
    ASAN_OPTIONS="detect_leaks=false" CXX="clang++" CC=clang CXXFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address" cmake .. -DSC_ENABLE_TESTING=ON  -DSC_BUILD_SCHEMAS="ifc2x3;ap214e3;ap209"
    ASAN_OPTIONS="detect_leaks=false" make
    ASAN_OPTIONS="detect_leaks=false" ctest . --output-on-failure
an error like the following is encountered:

==15739==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7ffeb2ca7621 at pc 0x00000043c943 bp 0x7ffeb2ca75d0 sp 0x7ffeb2ca6d80
READ of size 33 at 0x7ffeb2ca7621 thread T0
    #0 0x43c942 in __interceptor_strlen.part.45 (/home/jepler/src/stepcode/build/bin/lazy_sdai_ap214e3+0x43c942)
    #1 0x7fb9056e6143 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::append(char const*) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x11f143)
    #2 0x7fb905b677c3 in ErrorDescriptor::AppendToDetailMsg(char) /home/jepler/src/stepcode/src/clutils/errordesc.cc:150:5

Address 0x7ffeb2ca7621 is located in stack of thread T0 at offset 33 in frame
    #0 0x7fb905b676af in ErrorDescriptor::AppendToDetailMsg(char) /home/jepler/src/stepcode/src/clutils/errordesc.cc:149

  This frame has 1 object(s):
    [32, 33) '' <== Memory access at offset 33 overflows this variable

A similar problem with AppendToUserMsg is found by inspection.

After this change, all 200 tests pass under the AddressSanitizer
configuration
2017-08-21 08:35:04 -05:00
cmake Fix build error with g++ 6.3 (Debian Stretch) 2017-08-15 06:50:56 -05:00
data Revert "Get latest version of ap242 from http://stepmod.cvs.sourceforge.net/viewvc/stepmod/stepmod/data/modules/ap242_managed_model_based_3d_engineering/mim_lf.exp" 2016-08-06 16:51:58 -04:00
doc update Doxyfile 2015-05-20 20:03:53 -04:00
example/ap203min Add ExternalProject_add based build of ap203min example 2015-03-27 08:38:38 -07:00
include test for, and use, nullptr if we have it 2015-08-03 21:37:28 -04:00
misc appveyor log - use JSON-like console data, massaged for parsability 2015-08-23 22:30:16 -04:00
src errordesc.cc: Correctly append a single character to a std::string 2017-08-21 08:35:04 -05:00
test test for, and use, nullptr if we have it 2015-08-03 21:37:28 -04:00
.appveyor.yml appveyor build: don't use ctest parallelism 2017-08-15 20:38:47 -05:00
.gitignore update .gitignore 2015-02-08 17:51:05 -05:00
.travis.yml update CI-related stuff 2015-07-19 15:02:54 -04:00
AUTHORS bump version (0.8), update AUTHORS, NEWS for v0.8, add travis-ci build status to README 2014-12-26 15:10:00 -05:00
ChangeLog v0.7: Update changelog, INSTALL, NEWS, README, version string 2013-04-15 20:07:01 -04:00
CMakeLists.txt Add an option to completely bypass the git management of the version header. 2016-08-06 13:53:12 -04:00
CONTRIBUTING.md add CONTRIBUTING.md 2015-07-19 15:02:54 -04:00
COPYING Update text files for v0.6 2012-05-25 22:12:37 -04:00
ctest_matrix.cmake Case and whitespace on toplevel CMake files 2014-03-01 11:53:30 -05:00
CTestConfig.cmake Add CMake footer comment to CMake files 2014-02-28 22:06:09 -05:00
INSTALL v0.7: Update changelog, INSTALL, NEWS, README, version string 2013-04-15 20:07:01 -04:00
lcov.cmake Case and whitespace on toplevel CMake files 2014-03-01 11:53:30 -05:00
NEWS NEWS: forgot to include BRL-CAD changes 2014-12-26 16:55:44 -05:00
README.md README: put CI badges in table 2015-08-23 22:30:36 -04:00
run_ctest.cmake Case and whitespace on toplevel CMake files 2014-03-01 11:53:30 -05:00
SC_VERSION.txt bump version (0.8), update AUTHORS, NEWS for v0.8, add travis-ci build status to README 2014-12-26 15:10:00 -05:00

Travis-CI AppVeyor CI
Linux, OSX (LLVM) Windows (MSVC)
Build Status Build status

STEPcode v0.8 -- stepcode.org, github.com/stepcode/stepcode

  • What is STEPcode? SC reads ISO10303-11 EXPRESS schemas and generates C++ source code that can read and write Part 21 files conforming to that schema. In addition to C++, SC includes experimental support for Python.

  • Renamed in April/May 2012: SC was formerly known as STEP Class Libraries, SCL for short. It was renamed because the name wasn't accurate: the class libraries make up only a part of the code.

  • Much of the work to update SC has been done by the developers of BRL-CAD, and SC (then STEP Class Library) was originally created at NIST in the 90's.

  • For information on changes version-by-version, see the NEWS file

  • Building and testing SCL - see the INSTALL file

  • For more details on the libraries and executables, see the wiki: http://github.com/stepcode/stepcode/wiki/About-STEPcode

  • For license details, see the COPYING file. Summary: 3-clause BSD.



CODING STANDARDS

SC's source has been reformatted with astyle. When making changes, try to match the current formatting. The main points are:

  • compact (java-style) brackets:
    if( a == 3 ) {
        c = 5;
        function( a, b );
    } else {
        somefunc( );
    }
  • indents are 4 spaces
  • no tab characters
  • line endings are LF (linux), not CRLF (windows)
  • brackets around single-line conditionals
  • spaces inside parentheses and around operators
  • return type on the same line as the function name, unless that's too long
  • doxygen-style comments (see http://www.stack.nl/~dimitri/doxygen/docblocks.html)

If in doubt about a large patch, run astyle with the config file misc/astyle.cfg. Download astyle from http://sourceforge.net/projects/astyle/files/astyle/


For more info, see the wiki.