From 5d123c6a4d422563aeba39234c8e124e7be9cf68 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Tue, 15 Oct 1996 19:23:22 +0000 Subject: [PATCH] Fix default problems --- src/dbStatic/dbStaticNoRun.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/dbStatic/dbStaticNoRun.c b/src/dbStatic/dbStaticNoRun.c index 54c8bca52..8fd4adc29 100644 --- a/src/dbStatic/dbStaticNoRun.c +++ b/src/dbStatic/dbStaticNoRun.c @@ -164,6 +164,7 @@ int dbIsDefaultValue(DBENTRY *pdbentry) { dbFldDes *pflddes = pdbentry->pflddes; void *pfield = pdbentry->pfield; + char *endp; if(!pflddes) return(FALSE); switch (pflddes->field_type) { @@ -182,13 +183,19 @@ int dbIsDefaultValue(DBENTRY *pdbentry) case DBF_DOUBLE: case DBF_ENUM: if(!pfield) return(TRUE); - if(!pflddes->initial) return(FALSE); + if(!pflddes->initial) { + if((strtod((char *)pfield,&endp)==0.0) && (*endp=='\0')) + return(TRUE); + return(FALSE); + } return(strcmp((char *)pfield,(char *)pflddes->initial)==0); case DBF_MENU: { - unsigned short val,ival; + unsigned short val=0; + unsigned short ival; - if(!pfield) return(FALSE); - val = *(unsigned short *)pfield; + if(pfield) val = *(unsigned short *)pfield; + if(!pfield || pflddes->initial == 0) + return((val==0)?TRUE:FALSE); if(pflddes->initial == 0) return((val==0)?TRUE:FALSE); sscanf(pflddes->initial,"%hu",&ival); return((val==ival)?TRUE:FALSE); @@ -212,8 +219,12 @@ int dbIsDefaultValue(DBENTRY *pdbentry) if(!plink) return(FALSE); if(plink->type!=CONSTANT) return(FALSE); - if(plink->value.constantStr == 0) return(TRUE); - if(!pflddes->initial) return(FALSE); + if(!plink->value.constantStr) return(TRUE); + if(!pflddes->initial) { + if((strtod((char *)plink->value.constantStr,&endp)==0.0) + && (*endp=='\0')) return(TRUE); + return(FALSE); + } if(strcmp(plink->value.constantStr,pflddes->initial)==0) return(TRUE); return(FALSE);