diff options
Diffstat (limited to 'app/bin/param.c')
-rw-r--r-- | app/bin/param.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/app/bin/param.c b/app/bin/param.c index 47399ee..2f54d77 100644 --- a/app/bin/param.c +++ b/app/bin/param.c @@ -588,10 +588,10 @@ EXPORT void ParamLoadControl( case PD_STRING: if (p->oldD.s) MyFree( p->oldD.s ); - if (p->context) { - p->oldD.s = MyMalloc((uint32_t)p->context); - strncpy(p->oldD.s, (char*)p->valueP, (uint32_t)p->context); - *(p->oldD.s + (uint32_t)p->context - 1) = '\0'; + if (p->max_string) { + p->oldD.s = MyMalloc(p->max_string); + strncpy(p->oldD.s, (char*)p->valueP, p->max_string-1); + *(p->oldD.s + (uint32_t)p->max_string - 1) = '\0'; wStringSetValue((wString_p)p->control, (char*)p->oldD.s); } else { @@ -732,12 +732,11 @@ EXPORT long ParamUpdate( p->oldD.s = MyStrdup( stringV ); if ( p->valueP ) { if (p->option & PDO_STRINGLIMITLENGTH ) { - strncpy((char*)p->valueP, stringV, (uint32_t)p->context); - ((char *)p->valueP)[(uint32_t)p->context - 1] = '\0'; - if (strlen(stringV) > (uint32_t)p->context) { - NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, (uint32_t)p->context); + strncpy((char*)p->valueP, stringV, p->max_string-1); + ((char *)p->valueP)[p->max_string - 1] = '\0'; + if (strlen(stringV) > p->max_string-1) { + NoticeMessage2(0, MSG_ENTERED_STRING_TRUNCATED, _("Ok"), NULL, p->max_string-1); } - } else { strcpy((char*)p->valueP, stringV); @@ -916,10 +915,16 @@ static long ParamIntRestore( break; case PD_STRING: if ( oldP->s && strcmp((char*)p->valueP,oldP->s) != 0 ) { - /*if ((p->option&PDO_NORSTUPD)==0)*/ + if (p->max_string && (p->option & PDO_STRINGLIMITLENGTH)) { + ((char*)p->valueP)[0] = '\0'; + strncat((char*)p->valueP,oldP->s,p->max_string-1); + if (p->control) + wStringSetValue( (wString_p)p->control, (char*)p->valueP ); + } else { strcpy( (char*)p->valueP, oldP->s ); - if (p->control) - wStringSetValue( (wString_p)p->control, oldP->s ); + if (p->control) + wStringSetValue( (wString_p)p->control, oldP->s ); + } change |= (1L<<inx); } break; @@ -2211,7 +2216,7 @@ static void ParamPositionControl( ctlH = winH - (pd->group->origH-drawDataP->height); else ctlH = wControlGetHeight( pd->control ); - wDrawSetSize( (wDraw_p)pd->control, ctlW, ctlH ); + wDrawSetSize( (wDraw_p)pd->control, ctlW, ctlH, NULL ); if ( drawDataP->redraw ) drawDataP->redraw( (wDraw_p)pd->control, pd->context, ctlW, ctlH ); break; @@ -2486,6 +2491,7 @@ SkipControl: static void ParamDlgProc( wWin_p win, winProcEvent e, + void * refresh, void * data ) { paramGroup_p pg = (paramGroup_p)data; |