Objectivity Release Notes for STL Version 6.0 SUPPORTED CONFIGURATIONS Please see SUPPORTED CONFIGURATIONS section of CPP. ************************** NEW AND CHANGED FEATURES ************************** Please refer to Objectivity Release Notes PDF file for the new and changed features. **************** FIXED PROBLEMS **************** (12165) Process init fails; Objy static inits fail with SIGSEGV: Segmentation violation Symptom The same Objectivity/STL example runs fine on all other platforms except alpha where the compiler core dumps when compiling vector3.cxx. The example is new for R5.1 and originally came from a customer. Other examples works fine on origin1. It is hard to see any difference between an example that works and vector3. Jacob says that the stack looks corrupted. (12180) Need to account for buggy compilers Symptom Still need to account for buggy compilers #include template class MyRef : public ooRef(T) { }; When the customer #define OO_BUGGY_TEMPLATES to his code, the problem goes away. With version 5.1, the error: D:\Customer_Issues\other\book1.cpp(13) : error C2504: 'opiRef' : base class undefined is generated. The customer points out the workaround and then says: In Objy 5.0's ooConfig.h, you claim: /* Currently most template compilers are buggy. */ And in 5.1: /* Currently no C++ compiler template implementations are buggy. */ (12211) Objy/STL 5.1 installation claims the "Library Dirs" env variable is too large Symptom Objy/STL 5.1 installation claims the "Library Dirs" env variable is too large. (15239) re-implement ooString as a real template ... Symptom ooString(n) types were implemented by the archaic mechanism of the `declare' and `implement' macros. It has been re-implemented as a template so that those macros are now unnecessary. ********************** DOCUMENTATION ERRATA ********************** CHANGES TO INSTALLATION OF OBJECTIVITY/C++ STANDARD TEMPLATE LIBRARY -------------------------------------------------------------------- Installation and Platform Notes for Windows and Installation and Platform Notes for Unix have been reprinted for Release 6.0. A more recently updated PDF version of this book may be available on Objectivity's InfoCenter. Use your World Wide Web browser to access the web site http://info.objy.com CHANGES TO OBJECTIVITY/C++ STANDARD TEMPLATE LIBRARY BOOK ---------------------------------------------------------- An online version of this book is available online in Portable Document Format (PDF), which you can view using the freely available Acrobat Reader software from Adobe Systems, Inc. You can obtain Acrobat Reader for your platform from Adobe's online services. Use your World Wide Web browser to access the web site www.adobe.com. On Windows, the online book is located in: installDir\doc\cxxSTL.pdf On UNIX, the online book is located in: installDir/arch/doc/cxxSTL.pdf A more recently updated PDF version of this book may be available on Objectivity's InfoCenter. Use your World Wide Web browser to access the web site http://info.objy.com ************************************************************** The following errors exist in the Release 6.0 online Objectivity/C++ Standard Template Library book *and* in the Release 6.0 printed version of this book. (xxxx) Only default allocators are accepted by Objectivity/C++ STL containers. The section "Allocating Storage for Objectivity/C++ STL Containers" in Chapter 1 states that you can control the clustering of persistent elements by specifying a nondefault allocator. For compatibility with future releases of Objectivity/C++ STL, your applications should use only the default allocator for each Objectivity/C++ STL container. ************************************************************** *************** OPEN PROBLEMS *************** (11845) a method is called on the object contained in the d_vector causes segmentation fault Workaround First assign the containing object to a variable of the correct type, then it is possible to send messages to such an object. (15311) Use of reverse iterator causes application to crash Symptom Sample code: a_ref_map :: reverse_iterator refItr; int i =0; for (refItr=map_of_employees.rbegin(); refItr != map_of_employees.rend();refItr++) { const char* tmp = (const char*) (*refItr).first; // crashes here qa_printf("\nMap[%d]: ",i); qa_printf("%s ", tmp); ((*refItr).second).print(); qa_printf("\n"); i++; } Workaround a_ref_map :: iterator refItr = map_of_employees.end(); int i = map_of_employees.size() - 1; for (--refItr; i >= 0;--refItr) { qa_printf("\nMap[%d]: ",i); qa_printf("%s ", (const char*) (*refItr).first); ((*refItr).second).print(); qa_printf("\n"); i--; }