Changeset 12825
- Timestamp:
- Apr 12, 2007, 2:22:35 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/types/psMetadata.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/types/psMetadata.c
r12572 r12825 12 12 * @author Ross Harman, MHPCC 13 13 * 14 * @version $Revision: 1.15 8$ $Name: not supported by cvs2svn $15 * @date $Date: 2007-0 3-23 23:25:02$14 * @version $Revision: 1.159 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2007-04-13 00:22:35 $ 16 16 * 17 17 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 597 597 598 598 // how the item is added to the hash depends on prior existence, flags, etc. 599 if (existingEntry != NULL) { // prior existence600 if (existingEntry->type == PS_DATA_METADATA_MULTI || (flags & PS_META_DUPLICATE_OK) != 0) {599 if (existingEntry) { // prior existence 600 if (existingEntry->type == PS_DATA_METADATA_MULTI || (flags & PS_META_DUPLICATE_OK)) { 601 601 // duplicate entries allowed - add another entry. 602 602 … … 605 605 606 606 // add to the hash's list of duplicate entries 607 if (! psListAdd(existingEntry->data.list, PS_LIST_TAIL, (psPtr)item) ) {607 if (!psListAdd(existingEntry->data.list, PS_LIST_TAIL, (psPtr)item) ) { 608 608 psError(PS_ERR_UNKNOWN, false, 609 609 _("Failed to add metadata item, %s, to metadata collection list."), … … 611 611 return false; 612 612 } 613 } else if ( (flags & PS_META_REPLACE) != 0) {613 } else if (flags & PS_META_REPLACE) { 614 614 // replace entry instead of creating a duplicate entry. 615 615 … … 618 618 return false; 619 619 } 620 621 // remove the existing entry from metadata 622 psMetadataRemoveKey(md, key); 623 624 // treat as if new (added to list below) 625 /* The following is unneeded. HashAdd can't return false with non-null inputs. 626 if(!psHashAdd(mdTable, key, (psPtr)item)) { 627 psError(PS_ERR_UNKNOWN,false, 628 _("Failed to add metadata item, %s, to items table."),key); 629 return false; 630 } 631 */ 632 psHashAdd(mdTable, key, (psPtr)item); 633 634 // Generate warning that item has been replaced 635 // psLogMsg(__func__,PS_LOG_WARN,"Metadata item %s has been replaced", 636 // existingEntry->name); 620 if (item != existingEntry) { 621 // Replacing an item with itself can lead to memory corruption 622 // when you blow away what you're trying to add 623 psMetadataRemoveKey(md, key); 624 psHashAdd(mdTable, key, (psPtr)item); 625 } 637 626 } else { 638 627 // default is to error on duplicate entry. 639 if ( (flags & PS_META_NO_REPLACE) != 0) {628 if (flags & PS_META_NO_REPLACE) { 640 629 return true; 641 630 }
Note:
See TracChangeset
for help on using the changeset viewer.
