# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1264504584 -7200 # Node ID c084286672bedf24de57ef50e6d8505224320f08 # Parent 08ec8eefde2fa09736575df8eafff3ff38232d61 Revision: 201004 Kit: 201004 diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp --- a/persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.cpp Tue Jan 26 13:16:24 2010 +0200 @@ -852,6 +852,46 @@ return (pos!=KErrNotFound) ? iRepositoryInfo[pos] : NULL; } +void CObservable::CancelTransaction(CRepositoryTransactor& aTransactor,TUid aRepositoryUid) + { + if (aTransactor.IsInTransaction()) + { + ReleaseTransactionLock(aTransactor,aRepositoryUid); + CObservable::TSharedRepositoryInfo* shrepinfo =SharedRepositoryInfo(aRepositoryUid); + ASSERT(shrepinfo); + shrepinfo->iTransactors.Remove(aTransactor); + //Remove the link to the next transaction + aTransactor.iLink.iNext = NULL; + aTransactor.Deque(); + } + } + +/** Private helper method which releases any read/write locks held in the shared repository +by this transactor. Caller must set transactor's state or remove from queue as appropriate. +@param aTransactor transactor whose read/write locks are to be released. +@post Any read/write locks held by transactor are released. +*/ +void CObservable::ReleaseTransactionLock(CRepositoryTransactor& aTransactor,TUid aRepositoryUid) + { + CObservable::TSharedRepositoryInfo* shrepinfo = SharedRepositoryInfo(aRepositoryUid); + ASSERT(shrepinfo); + if (aTransactor.IsInActiveConcurrentReadWriteTransaction()) + { + shrepinfo->iNumActiveConcurrentReadWriteTransactions--; + ASSERT(shrepinfo->iNumActiveConcurrentReadWriteTransactions >= 0); // sanity check + } + else if (aTransactor.IsInActiveReadTransaction()) + { + shrepinfo->iPessimisticTransactionLockCount--; + ASSERT(shrepinfo->iPessimisticTransactionLockCount >= 0); // sanity check + } + else if (aTransactor.IsInActiveExclusiveReadWriteTransaction()) + { + // can only be one exclusive read/write transaction active (lock value -1) + ASSERT(shrepinfo->iPessimisticTransactionLockCount == -1); + shrepinfo->iPessimisticTransactionLockCount = 0; + } + } CObservable::TSharedRepositoryInfo::TSharedRepositoryInfo(TUid aUid) : iRepositoryUid(aUid), iTransactors(_FOFF(CRepositoryTransactor, iLink)), iPessimisticTransactionLockCount(0), iNumActiveConcurrentReadWriteTransactions(0) diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.h --- a/persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.h Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/cenrepsrv/obsrvr_noc.h Tue Jan 26 13:16:24 2010 +0200 @@ -90,6 +90,8 @@ void Notify(TUid aUid, TUint32 aVal) const; + void ReleaseTransactionLock(CRepositoryTransactor& aTransactor,TUid aRepositoryUid); + void CancelTransaction(CRepositoryTransactor& aTransactor,TUid aRepositoryUid); TInt FindOpenRepository(TUid aUid) const; void RemoveOpenRepository(CSharedRepository* aRepository); diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/cenrepsrv/shrepos.cpp --- a/persistentstorage/centralrepository/cenrepsrv/shrepos.cpp Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/cenrepsrv/shrepos.cpp Tue Jan 26 13:16:24 2010 +0200 @@ -813,7 +813,7 @@ aKeyInfo = 0; // must release locks otherwise shared repository will not commit changes // failed transactions have already released their locks - ReleaseTransactionLock(aTransactor); + TServerResources::iObserver->ReleaseTransactionLock(aTransactor,iSimRep->Uid()); } // transactions that haven't made any changes can be closed at any time @@ -834,30 +834,13 @@ return result; } -/** Cancels the transaction, discarding changes. -@post Not in a transaction -*/ -void CSharedRepository::CancelTransaction(CRepositoryTransactor& aTransactor) - { - if (aTransactor.IsInTransaction()) - { - ReleaseTransactionLock(aTransactor); - CObservable::TSharedRepositoryInfo* shrepinfo = TServerResources::iObserver->SharedRepositoryInfo(iSimRep->Uid()); - ASSERT(shrepinfo); - shrepinfo->iTransactors.Remove(aTransactor); - //Remove the link to the next transaction - aTransactor.iLink.iNext = NULL; - aTransactor.Deque(); - } - } - TInt CSharedRepository::FailTransaction(CRepositoryTransactor& aTransactor, TInt aError, TUint32 aErrorKey) { ASSERT(aError != KErrNone); // must fail for a reason if (aTransactor.IsInActiveTransaction()) { // locks cannot be removed from a failed transaction, so release before failing - ReleaseTransactionLock(aTransactor); + TServerResources::iObserver->ReleaseTransactionLock(aTransactor,iSimRep->Uid()); aTransactor.SetFailed(aError, aErrorKey); } return aError; // to allow "return FailTransaction(error, errorKey);" - error written once @@ -911,32 +894,7 @@ return KErrLocked; } -/** Private helper method which releases any read/write locks held in the shared repository -by this transactor. Caller must set transactor's state or remove from queue as appropriate. -@param aTransactor transactor whose read/write locks are to be released. -@post Any read/write locks held by transactor are released. -*/ -void CSharedRepository::ReleaseTransactionLock(CRepositoryTransactor& aTransactor) - { - CObservable::TSharedRepositoryInfo* shrepinfo = TServerResources::iObserver->SharedRepositoryInfo(iSimRep->Uid()); - ASSERT(shrepinfo); - if (aTransactor.IsInActiveConcurrentReadWriteTransaction()) - { - shrepinfo->iNumActiveConcurrentReadWriteTransactions--; - ASSERT(shrepinfo->iNumActiveConcurrentReadWriteTransactions >= 0); // sanity check - } - else if (aTransactor.IsInActiveReadTransaction()) - { - shrepinfo->iPessimisticTransactionLockCount--; - ASSERT(shrepinfo->iPessimisticTransactionLockCount >= 0); // sanity check - } - else if (aTransactor.IsInActiveExclusiveReadWriteTransaction()) - { - // can only be one exclusive read/write transaction active (lock value -1) - ASSERT(shrepinfo->iPessimisticTransactionLockCount == -1); - shrepinfo->iPessimisticTransactionLockCount = 0; - } - } + void CSharedRepository::ExternalizeCre(RWriteStream& aStream) const { diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/cenrepsrv/shrepos.h --- a/persistentstorage/centralrepository/cenrepsrv/shrepos.h Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/cenrepsrv/shrepos.h Tue Jan 26 13:16:24 2010 +0200 @@ -80,7 +80,6 @@ TInt StartTransaction(CRepositoryTransactor& aTransactor, TInt aMode); TInt CommitTransaction(CRepositoryTransactor& aTransactor, TUint32& aKeyInfo); - void CancelTransaction(CRepositoryTransactor& aTransactor); TInt FailTransaction(CRepositoryTransactor& aTransactor, TInt aError, TUint32 aErrorKey); void FailAllTransactions(const CRepositoryTransactor* aExcludeTransactor); TInt AttemptPromoteTransactionToReadWrite(CRepositoryTransactor& aTransactor); @@ -122,7 +121,6 @@ void DoRestoreConsistencyL(); TInt CreateRepositoryFromCreFileL(TCentRepLocation aLocation); TInt ReadSettingSavePolicyL(CIniFileIn& aFile,TServerSetting& aSetting, TSettingsAccessPolicy* &aPolicy, TBool& aSingleMetaFound); - void ReleaseTransactionLock(CRepositoryTransactor& aTransactor); TInt DoCommitTransactionSettings(CRepositoryTransactor& aTransactor, TUint32& aKeyInfo); void Notify(TUint32 aVal) const; diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/cenrepsrv/srvrepos_noc.cpp --- a/persistentstorage/centralrepository/cenrepsrv/srvrepos_noc.cpp Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/cenrepsrv/srvrepos_noc.cpp Tue Jan 26 13:16:24 2010 +0200 @@ -49,10 +49,12 @@ if (index>=0) { iRepository = TServerResources::iObserver->GetOpenRepository(index); - // cancel to ensure any read/write locks are released and transaction settings cleaned up - CancelTransaction(); } - + // cancel to ensure any read/write locks are released and transaction settings cleaned up + + CancelTransaction(); + + TServerResources::iObserver->RemoveObserver(iUid, this, index); iNotifier = NULL; diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/cenrepsrv/srvrepos_noc.h --- a/persistentstorage/centralrepository/cenrepsrv/srvrepos_noc.h Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/cenrepsrv/srvrepos_noc.h Tue Jan 26 13:16:24 2010 +0200 @@ -54,7 +54,7 @@ } inline void CancelTransaction() // serves as both rollback and async cancel { - iRepository->CancelTransaction(*this); + TServerResources::iObserver->CancelTransaction(*this,iUid); } void CleanupCancelTransactionPushL(); inline TInt FailTransaction(TInt aError, TUint32 aErrorKey) diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/group/bld.inf --- a/persistentstorage/centralrepository/group/bld.inf Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/group/bld.inf Tue Jan 26 13:16:24 2010 +0200 @@ -83,6 +83,7 @@ ../test/cccccc01.txt z:/private/10202be9/cccccc01.txt ../test/cccccc02.cre z:/private/10202be9/cccccc02.cre ../test/cccccc03.txt z:/private/10202be9/cccccc03.txt +../test/cccccc04.cre z:/private/10202be9/cccccc04.cre ../test/10055661.txt z:/private/10202be9/10055661.txt ../test/BACBACBA.txt z:/private/10202be9/bacbacba.txt ../test/BAC2BAC2.txt z:/private/10202be9/bac2bac2.txt diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/group/centreptestdata.iby --- a/persistentstorage/centralrepository/group/centreptestdata.iby Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/group/centreptestdata.iby Tue Jan 26 13:16:24 2010 +0200 @@ -53,6 +53,7 @@ data=DATAZ_\PRIVATE\10202BE9\CCCCCC01.txt PRIVATE\10202BE9\CCCCCC01.txt data=DATAZ_\PRIVATE\10202BE9\CCCCCC02.cre PRIVATE\10202BE9\CCCCCC02.cre data=DATAZ_\PRIVATE\10202BE9\CCCCCC03.txt PRIVATE\10202BE9\CCCCCC03.txt +data=DATAZ_\PRIVATE\10202BE9\CCCCCC04.cre PRIVATE\10202BE9\CCCCCC04.cre data=DATAZ_\PRIVATE\10202BE9\10055661.txt PRIVATE\10202BE9\10055661.txt data=DATAZ_\PRIVATE\10202BE9\F0000001.txt PRIVATE\10202BE9\F0000001.txt #ifndef __TE_CENTREP_BUR_SUITE_IBY__ diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/test/cccccc04.cre Binary file persistentstorage/centralrepository/test/cccccc04.cre has changed diff -r 08ec8eefde2f -r c084286672be persistentstorage/centralrepository/test/t_cenrep_defects.cpp --- a/persistentstorage/centralrepository/test/t_cenrep_defects.cpp Fri Jan 22 11:06:30 2010 +0200 +++ b/persistentstorage/centralrepository/test/t_cenrep_defects.cpp Tue Jan 26 13:16:24 2010 +0200 @@ -2737,10 +2737,73 @@ __UHEAP_MARKEND; } +LOCAL_C void ConnectStartSuicideTransL(void) + { + const TUid KLargeReposUid1 ={0xcccccc00}; + CRepository* repository=CRepository::NewL(KLargeReposUid1); + repository->StartTransaction(CRepository::EConcurrentReadWriteTransaction); + } + +LOCAL_C TInt SuicidalTransThread(TAny*) + { + CTrapCleanup* cleanup = CTrapCleanup::New(); + if(!cleanup) + return KErrNoMemory; + + TRAP_IGNORE(ConnectStartSuicideTransL()); + //purposely waiting to be killed + User::WaitForAnyRequest(); + return 0; + } + +LOCAL_C void DEF143352L() + { + CleanupCDriveL(); + __UHEAP_MARK; + + const TUid KLargeReposUid1 ={0xcccccc00}; + //create on in this thread and start transaction too + CRepository* rep1=CRepository::NewL(KLargeReposUid1); + User::LeaveIfError(rep1->StartTransaction(CRepository::EConcurrentReadWriteTransaction)); + + //create thread to connect, start transaction on the same repository as previous + RThread testThread; + _LIT(KThreadName1, "Martin"); + testThread.Create(KThreadName1, SuicidalTransThread, KDefaultStackSize, KMinHeapSize, 0x100000, NULL); + + TRequestStatus requestStatus; + testThread.Logon(requestStatus); + testThread.Resume(); + + //wait for the first client to complete the start transaction + User::After(1000000); + + //opening another big keyspace to force the eviction(cache size is 100K) both repository is about 78K in the heap + //cccccc03 is exactly the same as cccccc00 + const TUid KLargeReposUid2 ={0xcccccc04}; + CRepository* rep2=CRepository::NewL(KLargeReposUid2); + + //now kill the thread we have created + testThread.Kill(KErrDied); + User::WaitForRequest(requestStatus); + TEST2(requestStatus.Int(), KErrDied); + + //Wait for the session to be cleaned up + User::After(1000000); + + //now current test thread will retry the same connection + //at this stage server will panic with kern-exec 3 + CRepository* rep4=CRepository::NewL(KLargeReposUid1); + + delete rep1; + delete rep2; + delete rep4; + + __UHEAP_MARKEND; + } LOCAL_C void FuncTestsL() { - TheTest.Start(_L("DEF053500 - Central repository integer type key entries cannot handle hex values")); DEF053500L(); @@ -2857,6 +2920,9 @@ TheTest.Next(_L("@SYMTestCaseID:PDS-CENTRALREPOSITORY-UT-4086 PDEF141518: centralrepositorysrv.exe crashes and phone doesn't boot up ")); PDEF141519L(); + TheTest.Next(_L("@SYMTestCaseID:PDS-CENTRALREPOSITORY-CT-XXXX DEF143352: CentralRepository server crash in CObservable::RefreshTransactorAccessPolicies ")); + DEF143352L(); + TheTest.End(); } diff -r 08ec8eefde2f -r c084286672be persistentstorage/sqlite3api/TEST/TCL/tcldistribution/mac/Background.doc --- a/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/mac/Background.doc Fri Jan 22 11:06:30 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -Notes about the Background Only application template -==================================================== - -RCS: @(#) $Id: Background.doc,v 1.2 1998/09/14 18:40:03 stanton Exp $ - -We have included sample code and project files for making a Background-Only - application (BOA) in Tcl. This could be used for server processes (like the -Tcl Web-Server). - -Files: ------- - -* BOA_TclShells.¼ - This is the project file. -* tclMacBOAAppInit.c - This is the AppInit file for the BOA App. -* tclMacBOAMain - This is a replacement for the Tcl_Main for BOA's. - -Caveat: -------- - -This is an unsupported addition to MacTcl. The main feature that will certainly -change is how we handle AppleEvents. Currently, all the AppleEvent handling is -done on the Tk side, which is not really right. Also, there is no way to -register your own AppleEvent handlers, which is obviously something that would be -useful in a BOA App. We will address these issues in Tcl8.1. If you need to -register your own AppleEvent Handlers in the meantime, be aware that your code -will probably break in Tcl8.1. - -I will also improve the basic code here based on feedback that I recieve. This -is to be considered a first cut only at writing a BOA in Tcl. - -Introduction: -------------- - -This project makes a double-clickable BOA application. It obviously needs -some Tcl code to get it started. It will look for this code first in a -'TEXT' resource in the application shell whose name is "bgScript.tcl". If -it does not find any such resource, it will look for a file called -bgScript.tcl in the application's folder. Otherwise it will quit with an -error. - -It creates three files in the application folder to store stdin, stdout & -stderr. They are imaginatively called temp.in, temp.out & temp.err. They -will be opened append, so you do not need to erase them after each use of -the BOA. - -The app does understand the "quit", and the "doScript" AppleEvents, so you can -kill it with the former, and instruct it with the latter. It also has an -aete, so you can target it with Apple's "Script Editor". - -For more information on Macintosh BOA's, see the Apple TechNote: 1070. - -Notifications: --------------- - -BOA's are not supposed to have direct contact with the outside world. They -are, however, allowed to go through the Notification Manager to post -alerts. To this end, I have added a Tcl command called "bgnotify" to the -shell, that simply posts a notification through the notification manager. - -To use it, say: - -bgnotify "Hi, there little buddy" - -It will make the system beep, and pop up an annoying message box with the -text of the first argument to the command. While the message is up, Tcl -is yielding processor time, but not processing any events. - -Errors: -------- - -Usually a Tcl background application will have some startup code, opening -up a server socket, or whatever, and at the end of this, will use the -vwait command to kick off the event loop. If an error occurs in the -startup code, it will kill the application, and a notification of the error -will be posted through the Notification Manager. - -If an error occurs in the event handling code after the -vwait, the error message will be written to the file temp.err. However, -if you would like to have these errors post a notification as well, just -define a proc called bgerror that takes one argument, the error message, -and passes that off to "bgnotify", thusly: - -proc bgerror {mssg} { - bgnotify "A background error has occured\n $mssg" -} - -Support: --------- - -If you have any questions, contact me at: - -jim.ingham@eng.sun.com diff -r 08ec8eefde2f -r c084286672be persistentstorage/sqlite3api/TEST/TCL/tcldistribution/mac/bugs.doc --- a/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/mac/bugs.doc Fri Jan 22 11:06:30 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -Known bug list for Tcl 8.0 for Macintosh - -by Ray Johnson -Sun Microsystems Laboratories -rjohnson@eng.sun.com - -RCS: @(#) $Id: bugs.doc,v 1.4 2000/02/10 08:39:37 jingham Exp $ - -This was a new feature as of Tcl7.6b1 and as such I'll started with -a clean slate. I currently know of no reproducable bugs. I often -get vague reports - but nothing I've been able to confirm. Let -me know what bugs you find! - -The Macintosh version of Tcl passes most all tests in the Tcl -test suite. Slower Macs may fail some tests in event.test whose -timing constraints are too tight. If other tests fail please report -them. - -Ray - -Known bugs in the current release. - -* With the socket code you can't use the "localhost" host name. This - is actually a known bug in Apple's MacTcp stack. However, you can - use [info hostname] whereever you would have used "localhost" to - achive the same effect. - -* Most socket bugs have been fixed. We do have a couple of test cases - that will hang the Mac, however, and we are still working on them. - If you find additional test cases that show crashes please let us - know! - -* In Tcl 8.2, the new Regexp code seems to be more deeply recursive than -the older version in Tcl8.0. As a result, I have had to increase the Stack -size of Tcl to 1Meg. If you are not doing regexps with many subexpressions, -this is probably more stack than you will need. You can relink with the -stack set to 512K, and you will be fine for most purposes. -* This regexp problem is fixed in Tcl8.3. If you are going to do complex -regexp's, it is probably a good idea to keep the stack size big. But normal -regexps will not cause crashes. - -* The "clock scan -base" command does not work. The epoch is wrong. -* The file mtime command does not work when setting the time, it is off -by 4 years. diff -r 08ec8eefde2f -r c084286672be persistentstorage/sqlite3api/TEST/TCL/tcldistribution/mac/libmoto.doc --- a/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/mac/libmoto.doc Fri Jan 22 11:06:30 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -Notes about the use of libmoto ------------------------------- - -RCS: @(#) $Id: libmoto.doc,v 1.2 1998/09/14 18:40:04 stanton Exp $ - -First of all, libmoto is not required! If you don't have it, you -can simply remove the library reference from the project file and -everything should compile just fine. - -The libmoto library replaces certain functions in the MathLib and -ANSI libraries. Motorola has optimized the functions in the library -to run very fast on the PowerPC. As I said above, you don't need -this library, but it does make things faster. - -Obtaining Libmoto: - - For more information about Libmoto and how to doanload - it, visit the following URL: - - http://www.mot.com/SPS/PowerPC/library/fact_sheet/libmoto.html - - You will need to register for the library. However, the - library is free and you can use it in any commercial product - you might have. - -Installing Libmoto: - - Just follow the instructions provided by the Motorola - README file. You need to make sure that the Libmoto - library is before the ANSI and MathLib libraries in - link order. Also, you will get several warnings stateing - that certain functions have already been defined in - Libmoto. (These can safely be ignored.) - -Finally, you can thank Kate Stewart of Motorola for twisting my -arm at the Tcl/Tk Conference to provide some support for Libmoto. - -Ray Johnson - diff -r 08ec8eefde2f -r c084286672be persistentstorage/sqlite3api/TEST/TCL/tcldistribution/mac/morefiles.doc --- a/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/mac/morefiles.doc Fri Jan 22 11:06:30 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -Notes about MoreFiles, dnr.c & other non-Tcl source files ---------------------------------------------------------- - -RCS: @(#) $Id: morefiles.doc,v 1.2 1998/09/14 18:40:04 stanton Exp $ - -The Macintosh distribution uses several source files that don't -actually ship with Tcl. This sometimes causes problems or confusion -to developers. This document should help clear up a few things. - -dnr.c ------ - -We have found a way to work around some bugs in dnr.c that -Apple has never fixed even though we sent in numerous bug reports. -The file tclMacDNR.c simply set's some #pragma's and the includes -the Apple dnr.c file. This should work the problems that many of -you have reported with dnr.c. - -More Files ----------- - -Macintosh Tcl/Tk also uses Jim Luther's very useful package called -More Files. More Files fixes many of the broken or underfunctional -parts of the file system. - -More Files can be found on the MetroWerks CD and Developer CD from -Apple. You can also down load the latest version from: - - ftp://members.aol.com/JumpLong/ - -The package can also be found at the home of Tcl/Tk for the mac: - - ftp://ftp.sunlabs.com/pub/tcl/mac/ - -I used to just link the More Files library in the Tcl projects. -However, this caused problems when libraries wern't matched correctly. -I'm now including the files in the Tcl project directly. This -solves the problem of missmatched libraries - but may not always -compile. - -If you get a compiliation error in MoreFiles you need to contact -Jim Luther. His email address: - - JumpLong@aol.com - -The version of More Files that we use with Tcl/Tk is 1.4.3. Early -version may work as well.. - -Unfortunantly, there is one bug in his library (in 1.4.3). The bug is -in the function FSpGetFullPath found in the file FullPath.c. After -the call to PBGetCatInfoSync you need to change the line: - - if ( result == noErr ) - - to: - - if ( (result == noErr) || (result == fnfErr) ) - - -The latest version of More Files is 1.4.6. Unfortunantly, this -version has a bug that keeps it from working with shared libraries -right out of the box. If you want to use 1.4.6 you can but you will -need to make the following fix: - - In the file "Opimization.h" in the More Files package you - need to remove the line "#pragma internal on". And in the - file "OptimazationEnd.h" you need to remove the line - "#pragma internal reset". - -Note: the version of MoreFile downloaded from the Sun Tcl/Tk site -will have the fix included. (If you want you can send email to -Jim Luther suggesting that he use Tcl for regression testing!) - -Ray Johnson diff -r 08ec8eefde2f -r c084286672be traceservices/commsdebugutility/SSVR/comsdbgwriter.cpp --- a/traceservices/commsdebugutility/SSVR/comsdbgwriter.cpp Fri Jan 22 11:06:30 2010 +0200 +++ b/traceservices/commsdebugutility/SSVR/comsdbgwriter.cpp Tue Jan 26 13:16:24 2010 +0200 @@ -134,8 +134,6 @@ TInt CLogManager::ThreadEntryPoint(TAny* aPtr) { - __UHEAP_MARK; - MLogArrayAccess* arrayAccess = static_cast (aPtr); CTrapCleanup* cleanupStack = CTrapCleanup::New(); @@ -148,8 +146,6 @@ delete cleanupStack; - __UHEAP_MARKEND; - return err; } diff -r 08ec8eefde2f -r c084286672be traceservices/tracefw/integ_test/documentation/backup/OSTv2_TestSuite_How_To_v0.1.doc Binary file traceservices/tracefw/integ_test/documentation/backup/OSTv2_TestSuite_How_To_v0.1.doc has changed