summaryrefslogtreecommitdiffstats
path: root/src/H5O.c
Commit message (Collapse)AuthorAgeFilesLines
* [svn-r12803] Description:Quincey Koziol2006-10-231-4/+7
| | | | | | | | | | | | | | Finish new version of the I/O pipeline message, which is much smaller than the previous version. This version is used with the "use the latest version of the format" flag. Closed several memory leaks/overruns (found with valgrind). Also, lots of compiler & formatting cleanups. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12801] Description:Quincey Koziol2006-10-231-330/+463
| | | | | | | | | | | | Fix several errors in the "latest version" of the object header format changes and enable the new version when requested now. Clean up several confusing or duplicated sections of code. Tested on: Linux/32 2.4 (heping) Linux/64 2.4 (mir) FreeBSD/32 4.11 (sleipnir)
* [svn-r12771] Description:Quincey Koziol2006-10-171-46/+327
| | | | | | | | | | | | | | | | | More fixes to make the I/O & memory operations more efficient when loading & flushing object header chunks. Add in concept of a chunk having a "gap" at the end - unused space that is not large enough to hold a full null message that describes it. Clean up formatting a bit. Latest version of object header format not enabled yet, still working on a few bugs... Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12770] Description:Quincey Koziol2006-10-161-75/+103
| | | | | | | | | | | | | | | Overhaul usage of object header chunks to reduce I/O operations and memory allocations. The object header prefix is now stored in the first object header chunk's "image" in memory. Also, lots of formatting cleanups. Taught h5debug tool about new object header format (which isn't enabled just yet). Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12761] Description:Quincey Koziol2006-10-161-276/+251
| | | | | | | | | | Refactor object header macros, in preparation for updating the format. Tested on: Mac OS/PPC 10.4.8 (amazon) FreeBSD/32 4.11 (sleipnir) w/thread-safe Linux/32 2.4 (heping) w/C++ & FORTRAN Linux/64 2.4 (mir) w/1.6 compat & build-all
* [svn-r12756] Description:Quincey Koziol2006-10-121-57/+47
| | | | | | | | | | | | | | Clean up some object header code in advance of more major changes in the near future. Fix small initialization error in attribute message name buffer copy. Tweak down the default # of messages for new object headers. Tested on: FreeBSD/32 4.11 (sleipnir) w/threadsafe Linux/32 2.4 (heping) w/FORTRAN & C++ Mac OS/32 10.4.8 (amazon)
* [svn-r12708] Description:Quincey Koziol2006-10-031-0/+2
| | | | | | | | | | | | | | | | | | | Add the "use the latest version of the format" support to datatype messages. And a regression test to check that it's working. Also, found that we have been over-allocating space for compound datatype messages (when they have array datatypes or can use the latest version of the format) and trimmed the size back. Clean up datatype & dataspace encode/decode routines by having them allocate & release "fake" file structures, which gets them out of needing to "know" about the internals of file structures. Other minor whitespace/formatting cleanups, etc. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12706] Description:Quincey Koziol2006-10-021-1/+1
| | | | | | | | | Clean up some of the warnings on 64-bit Linux... Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2) Too minor to require h5committest
* [svn-r12701] Description:Quincey Koziol2006-10-021-4/+2
| | | | | | | | Clean up formatting/whitespace Tested on: Mac OSX/32 10.4.8 (amazon) Too minor to require full h5committest
* [svn-r12700] Alert:Quincey Koziol2006-10-021-100/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | File format is not stable, don't keep files produced! Description: First stage of checkins modifying the format of groups to support creation order. Implement "dense" storage for links in groups. Try to clarify some of the symbols for the H5L API. Add the H5Pset_latest_format() flag for FAPLs, to choose to use the newest file format options (including "dense" link storage in groups) Add the H5Pset_track_creation_order() flag for GCPLs, to enable creation order tracking in groups (although no index on creation order yet). Remove --enable-group-revision configure flag, as file format issues are now handled in a backwardly/forwardly compatible way. Clean up lots of compiler warnings and other minor formatting issues. Tested on: FreeBSD/32 4.11 (sleipnir) w/threadsafe Linux/32 2.4 (heping) w/FORTRAN & C++ Linux/64 2.4 (mir) w/enable-v1.6 compa Mac OSX/32 10.4.8 (amazon) AIX 5.3 (copper) w/parallel & FORTRAN
* [svn-r12694] Fixed a couple of typos in the comment block for H5Oincr_refcount.James Laird2006-09-291-2/+2
|
* [svn-r12693] Changed return values of H5O*_refcount functions to be herr_t ↵James Laird2006-09-291-7/+9
| | | | | | | | instead of int. Mostly cosmetic change. Testing on mir.
* [svn-r12686] Added compression to Packet Tables. Now both C and C++ packet ↵James Laird2006-09-261-0/+1
| | | | | | | | | | | | | | | | tables have an extra parameter that sets the deflate filter. Added tests, made examples use the new APIs. Cleaned up include files a little and removed some casts that I hope are superfluous. If anybody encounters strange errors in the packet table tests where the chunk size is set to some extremely large value, please let me know, but I was unable to reproduce this error on any system. Tested on mir, heping, sol, juniper, VS 6.0. Looked for the chunk size error on several other systems a month or two ago.
* [svn-r12681] Description:Quincey Koziol2006-09-261-178/+180
| | | | | | | Encode/decode object references in portable way. Tested on: Solaris/64 2.9 (shanti)
* [svn-r12680] Description:Quincey Koziol2006-09-251-68/+261
| | | | | | | | | Review, revise & checkin in Peter's latest round of object copy changes, which add basic support for datasets & attributes with reference datatypes. Tested on: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago2)
* [svn-r12596] Refactored how external files are opened and closed.James Laird2006-08-181-8/+94
| | | | | | | | Object header locations (H5O_loc_t's) can now "hold open" a file and decrement its open object count when they close. This means that locations (H5O_loc_t's and H5G_loc_t's) should always be freed. Added more thorough tests to ensure that external files are closed.
* [svn-r12528] Added User-Defined links to the library.James Laird2006-08-021-1/+399
| | | | | | | | | | | | | | Users can create external links using H5L_create_external(). These links point to an object in another HDF5 file. Users can alter the behavior of external links or create new kinds of links by registering callbacks using the H5L interface. Added tests, tools support, etc. Also a number of other, minor changes have been made (some restructuring of the H5L interface, for instance). Additional documentation and examples are forthcoming.
* [svn-r12474] Quincey Koziol2006-07-151-2/+3
| | | | | | | | Clean up some compiler warnings. Tested on: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r12440] Purpose:Quincey Koziol2006-06-271-61/+61
| | | | | | | | | | | Code cleanup Description: Trim trailing whitespace in Makefile.am and C/C++ source files to make diffing changes easier. Platforms tested: None necessary, whitespace only change
* [svn-r12439] Purpose:Quincey Koziol2006-06-261-31/+81
| | | | | | | | | | | | | New feature Description: Check in Peter's code to add support for "shallow copy", "create intermediate groups", "no attributes" and "expand soft links" support. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 (chicago) w/ & w/o group-revision enabled h5committest
* [svn-r12221] Purpose:Quincey Koziol2006-04-101-0/+14
| | | | | | | | | | | | | | | "Hide" file format changes (for now) Description: Add ifdef's (controlled by the --enable-group-revision configure flag) to disable group revision changes to the file format, in order to allow alpha release to go ahead without releasing an unsupported version into the wild. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 32-bit (heping) Linux 2.4 64-bit (mir) Solaris 2.9 (shanti)
* [svn-r12189] Purpose:Quincey Koziol2006-04-011-31/+33
| | | | | | | | | | | | | | New/expanded features Description: Check in Peter's changed for the object copy code: - Allow/fix copying datasets using named variable-length datatypes - Start adding framework for property list to control how object copying occurs. Platforms tested: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r11899] Purpose:Quincey Koziol2006-01-281-2/+4
| | | | | | | | | | | | | | | | Bug fix & new feature Description: Support variable-length datatypes in compact data storage and chunked data storage, along with attributes. Bug fix on the H5T_vlen_set_loc to allow for changing the file on a variable-length datatype on disk. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 Can't h5committest right now, due to missing cache files.
* [svn-r11838] Purpose:Quincey Koziol2005-12-261-6/+6
| | | | | | | | | | | | | | | | Bug fix Description: Retrieving an object's name could fail (in various ways) under certain circumstances (mostly having to do with mounted files). Solution: Re-write & simplify "get object name" code to fix error in a better way than adding yet another hack to the previous pile of hacks... :-) Platforms tested: FreeBSD 4.11 (sleipnir) h5committest
* [svn-r11771] Purpose:Quincey Koziol2005-12-081-2/+4
| | | | | | | | | | | | Code cleanup Description: Fix a bunch of warnings flagged by Windows compilers. Platforms tested: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r11758] Purpose:Quincey Koziol2005-12-041-572/+496
| | | | | | | | | | | | | New feature Description: Add in a combination of Peter's & my code to support copying variable-length data from one file to another, although currently only supported with contiguous data storage. Platforms tested: FreeBSD 4.11 (sleipnir) h5committest
* [svn-r11712] Purpose:Quincey Koziol2005-11-151-1538/+1634
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New feature Description: Check in baseline for compact group revisions, which radically revises the source code for managing groups and object headers. WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! This initiates the "unstable" phase of the 1.7.x branch, leading up to the 1.8.0 release. Please test this code, but do _NOT_ keep files created with it - the format will change again before the release and you will not be able to read your old files!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! WARNING!!!! Solution: There's too many changes to really describe them all, but some of them include: - Stop abusing the H5G_entry_t structure and split it into two separate structures for non-symbol table node use within the library: H5O_loc_t for object locations in a file and H5G_name_t to store the path to an opened object. H5G_entry_t is now only used for storing symbol table entries on disk. - Retire H5G_namei() in favor of a more general mechanism for traversing group paths and issuing callbacks on objects located. This gets us out of the business of hacking H5G_namei() for new features, generally. - Revised H5O* routines to take a H5O_loc_t instead of H5G_entry_t - Lots more... Platforms tested: h5committested and maybe another dozen configurations.... :-)
* [svn-r11686] Purpose:Quincey Koziol2005-11-071-61/+470
| | | | | | | | | | | | | | | | | | | New feature Description: Add in baseline "object copy" code from Peter [in the form of a new API routine: H5Gcopy()]. There's still some work to do (like handling variable- length datatypes and possibly support for references) and it hasn't been tested on mounted files yet, but the core functionality is there and working correctly. I've also got a set of patches to update the 1.6 branch with tweaks to keep the branches mostly in sync, but Elena will kill me if I import them before the 1.6.5 release is out... :-) Platforms tested: FreeBSD 4.11 (sleipnir) h5committested
* [svn-r11557] Purpose:Quincey Koziol2005-10-131-241/+97
| | | | | | | | | | | | | | | Bug fix Description: Mark continuation message & chunk as dirty for case where chunk is extended. Also refactored code to reduce duplication. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 Too minor to require h5committest
* [svn-r11470] Purpose:John Mainzer2005-09-271-246/+500
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Repair synchronization bug in the metadata cache in PHDF5 Also repair numerous other bugs that surfaced in testing the bug fix. Description: While operations modifying metadata must be collective, we allow independant reads. This allows metadata caches on different processes to adjust to different sizes, and to place the entries on their dirty lists in different orders. Since only process 0 actually writes metadata to disk (all other processes thought they did, but the writes were discarded on the theory that they had to be collective), this made it possible for another process to modify metadata, flush it, and then read it back in in its original form (pre-modification) form. The possibilities for file corruption should be obvious. Solution: Make the policy that only process 0 can write to file explicit, and visible to the metadata caches. Thus only process 0 may flush dirty entries -- all other caches must retain dirty entries until they are informed by process 0 that the entries are clean. Synchronization is handled by counting the bytes of dirty cache entries created, and then synching up between the caches whenever the sum exceeds an (eventually user specified) limit. Dirty metadata creation is consistent across all processes because all operations modifying metadata must be collective. This change uncovered may bugs which are repaired in this checkin. It also required modification of H5HL and H5O to allocate file space on insertion rather than on flush from cache. Platforms tested: H5committest, heping(parallel & serial) Misc. update:
* [svn-r11384] Purpose:Quincey Koziol2005-09-121-109/+368
| | | | | | | | | | | | | | | | | | | | | Code cleanup Description: Merge back changes from "compact group" work that improve the infrastructure of the library and may impact others. In this round of merging, that includes: - Move datatype allocation into single internal routine, instead of duplicated code that was spread out in a dozen or so places. - Clean up guts of object header routines (H5O_*) to allow for some of the fancieroperations that need to be performed on groups, along with some general improvements. - Added a new error code - Some minor cleanups in other code.... Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 Mac OS X
* [svn-r11245] Purpose:Quincey Koziol2005-08-131-71/+71
| | | | | | | | | | | | | | | | | | | | Code cleanup Description: Trim trailing whitespace, which is making 'diff'ing the two branches difficult. Solution: Ran this script in each directory: foreach f (*.[ch] *.cpp) sed 's/[[:blank:]]*$//' $f > sed.out && mv sed.out $f end Platforms tested: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r11093] Purpose:Quincey Koziol2005-07-211-25/+9
| | | | | | | | | | | | Bug fix Description: Rewrite code for mounting files to clean up layers of kludges and implement a much cleaner and more maintainable design. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4
* [svn-r11078] Purpose:Quincey Koziol2005-07-171-4/+4
| | | | | | | | | | | | | | | Bug fix Description: Correct memory leak when a dataset is attempted to be opened, but turns out to be a group or named datatype. Also, clean up code that was leading to the leak and zero out empty group entries to help prevent similar errors in the future. Platforms tested: FreebSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r11077] Purpose:Quincey Koziol2005-07-161-2/+18
| | | | | | | | | | | | Bug fix Description: Further progress on fixing file mounting to work properly. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 Too minor to require h5committest
* [svn-r11014] Purpose:Quincey Koziol2005-07-021-75/+56
| | | | | | | | | | | | Code cleanup Description: Refactor metadata cache to merge "dirtied" flag in with other flags for H5AC_unprotect and H5C_unprotect. Platforms tested: FreeBSD 4.11 (sleipnir) h5committest
* [svn-r10978] Purpose:John Mainzer2005-06-241-45/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | Interim checkin of code changes moving management of the is_dirty flag into the cache code. Description: Prior to this checkin, management of the is_dirty flag was handled above the level of the metadata cache. This can no longer be allowed, as it introduces a race condition in the proposed fix for a cache coherency bug in PHDF5. Solution: Move management fo the is_dirty flag to the cache code proper. Entries are now marked as dirty via a flag on the unprotect call. Platforms tested: h5committested Misc. update:
* [svn-r10734] Purpose:Quincey Koziol2005-05-071-14/+14
| | | | | | | | | | | | Bug fix Description: Fix several problems with mounting files on an entry in a group when the file the group is in has been closed. Platforms tested: FreeBSD 4.11 (sleipnir) h5committest
* [svn-r9857] Purpose: MaintenanceElena Pourmal2005-01-221-3/+0
| | | | | | | | | | | | | | Description: Removed PABLO from the source Solution: Platforms tested: arabica with 64-bit, copper with parallel, heping with GNU C and C++ and PGI fortran (but I disabled hl, there is some weird problem only on heping: F9XMODFLAG is not propagated to the Makefile files Misc. update:
* [svn-r9850] Purpose:John Mainzer2005-01-201-16/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1) Provide facilities in cache to allow us to avoid a potential cache consistency bug in the parallel case. 2) Clean up a off by one sanity checking bug. 3) Turn off execution of long running tests in debug mode. Description: 1) In the parallel case, all writes to metadata must be collective, but reads may not be. In pricipal, this allows us to different contents in different caches. This isn't a problem as long as the correct data is always on disk, but unless we can force certain writes immediately, that need not be the case. 2) & 3) should need no further explanation. Solution: 1) Add code allowing us to mark cache entries, and then force these entries to be flushed at a later time. Note that to actually avoid the bug, we will have to modify existing code to use these new features. 2) & 3) should need no further explanation. Platforms tested: heping (serial debug and production) committest (copper, sol, and heping). test failed on heping in the c++ portion of the build, but at Quincey's siggestion, I am proceeding with the checkin. Misc. update:
* [svn-r9727] Purpose:Quincey Koziol2004-12-291-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug Fix/Code Cleanup/Doc Cleanup/Optimization/Branch Sync :-) Description: Generally speaking, this is the "signed->unsigned" change to selections. However, in the process of merging code back, things got stickier and stickier until I ended up doing a big "sync the two branches up" operation. So... I brought back all the "infrastructure" fixes from the development branch to the release branch (which I think were actually making some improvement in performance) as well as fixed several bugs which had been fixed in one branch, but not the other. I've also tagged the repository before making this checkin with the label "before_signed_unsigned_changes". Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel & fphdf5 FreeBSD 4.10 (sleipnir) w/threadsafe FreeBSD 4.10 (sleipnir) w/backward compatibility Solaris 2.7 (arabica) w/"purify options" Solaris 2.8 (sol) w/FORTRAN & C++ AIX 5.x (copper) w/parallel & FORTRAN IRIX64 6.5 (modi4) w/FORTRAN Linux 2.4 (heping) w/FORTRAN & C++ Misc. update:
* [svn-r9556] Purpose:Quincey Koziol2004-11-221-16/+112
| | | | | | | | | | | | | | | | | | | | | Code cleanup & optimization Description: Improve ADF/CGNS benchmark by reducing the number of internal attribute copies made during creations, opens and writes. Added new H5O_iterate() routine for iterating through messages of a certain type in the object header (attributes are the only message currently that can have multiple instances in the object header). Cross-pollinated various minor code cleanups to reduce diffs between branches. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Solaris 2.7 (arabica) Too minor to require h5committest
* [svn-r9537] Purpose:Quincey Koziol2004-11-171-1/+4
| | | | | | | | | | | | | | | | | | | | | | | Code cleanup & optimizations Description: Clean up some of the code in attributes to avoid allocating memory and performing type conversions when the conversion is a noop. Avoid memory allocations of attribute data structures by switching to use library's free list memory allocator routines. Avoid memory allocations of object header continuation data structures by switching to use library's free list memory allocator routines. Rearrange threaded, balanced binary tree macros slightly to avoid some overhead. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Solaris 2.7 (arabica) Too minor to require h5committest
* [svn-r9329] James Laird2004-09-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Purpose: Feature Description: Datatypes and groups now use H5FO "file object" code that was previously only used by datasets. These objects will hold a file open if the file is closed but they have not yet been closed. If these objects are unlinked then relinked, they will not be destroyed. If they are opened twice (even by two different names), both IDs will "see" changes made to the object using the other ID. When an object is opened using two different names (e.g., if a dataset was opened under one name, then mounted and opened under its new name), calling H5Iget_name() on a given hid_t will return the name used to open that hid_t, not the current name of the object (this is a feature, and a change from the previous behavior of datasets). Solution: Used H5FO code that was already in place for datasets. Broke H5D_t's, H5T_t's, and H5G_t's into a "shared" struct and a private struct. The shared structs (H5D_shared_t, etc.) hold the object's information and are used by all IDs that point to a given object in the file. The private structs are pointed to by the hid_t and contain the object's group entry information (including its name) and a pointer to the shared struct for that object. This changed the naming of structs throughout the library (e.g., datatype->size is now datatype->shared->size). I added an updated H5Tinit.c to windows.zip. Platforms tested: Visual Studio 7, sleipnir, arabica, verbena Misc. update:
* [svn-r9183] Purpose: New featureRaymond Lu2004-09-011-3/+3
| | | | | | | | | | | | Description: Restore 6 old error API functions back to the library to be backward compatible with v1.6. They are H5Epush, H5Eprint, H5Ewalk, H5Eclear, H5Eset_auto, H5Eget_auto. These functions do not have error stack as parameter. Solution: Internally, these functions use default error stack. Platforms tested: h5committest and fuss. Misc. update: RELEASE.txt
* [svn-r8927] Purpose:Quincey Koziol2004-07-221-33/+4
| | | | | | | | | | | Code cleanup Description: Clean up various recent changes a little. Platforms tested: FreeBSD 4.10 (sleipnir) Too minor to require h5committest
* [svn-r8921] Purpose: new featureRaymond Lu2004-07-211-17/+37
| | | | | | | | | | | | | | Description: This is the second step of checkin for encoding and decoding objects. H5Tencode and H5Tdecode have been committed in the previous step. H5Sencode and H5Sdecode are checked in this time. Solution: Given object ID, these functions encode and decode object information into and from binary buffer and return new object ID. They take advantage of the existing codes of object header message and encode in the same format. Platforms tested: fuss and h5committest. Misc. update: RELEASE.txt
* [svn-r8892] Purpose:Quincey Koziol2004-07-161-59/+50
| | | | | | | | | | | | | | Code cleanup Description: Clean up a bunch of warnings and bring new code better inline with current library coding practice. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Too minor to require h5committest Misc. update:
* [svn-r8879] Raymond Lu2004-07-141-0/+97
| | | | | | | | | | | | | | Purpose: New feature Description: New API H5Tencode and H5Tdecode. Given object ID, H5Tencode encodes object information into a binary form. H5Tdecode decode an object information in a binary form, reconstructs the object and return a new object ID. Solution: Use object header functions H5O_dtype_decode and H5O_dtype_encode to facilitate them. The encoded binary is exactly like object header information. This is the first step checkin. Will check in H5Sencode and H5Sdecode later. Platforms tested: h5committed and fuss. Misc. update: will update release.txt after 2nd step checkin.
* [svn-r8877] James Laird2004-07-141-6/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | Purpose: Bug Fix Description: If an HDF5 file grows larger than its address space, it dies and is unable to write any data. This is more likely to happen since users are able to change the number of bytes used to store addresses in the file. Solution: HDF5 now throws an error instead of dying. In addition, it "reserves" address space for the local heap and for object headers (which do not allocate space immediately). This ensures that after the error occurs, there is enough address space left to flush the entire file to disk, so no data is lost. A more complete explanation is at /doc/html/TechNotes/ReservedFileSpace.html Platforms tested: sleipnir, copper (parallel), verbena, arabica, Windows (Visual Studio 7) Solution: Platforms tested: Misc. update: