diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index b0ed67961..88b7b7125 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -1206,7 +1206,7 @@ inp_chk_for_multi_in_vcvs(struct line *c, int *line_number) struct line *a_card, *model_card, *next_card; char *str_ptr1, *str_ptr2, keep, *comma_ptr, *xy_values1[5], *xy_values2[5]; char *node_str, *ctrl_node_str, *xy_str1, *model_name, *fcn_name; - char big_buf[1000]; + char *m_instance, *m_model; int xy_count1, xy_count2; str_ptr1 = skip_non_ws(line); @@ -1262,15 +1262,15 @@ inp_chk_for_multi_in_vcvs(struct line *c, int *line_number) if (xy_count1 != 2 && xy_count2 != 2) fprintf(stderr, "ERROR: only expecting 2 pair values for multi-input vcvs!\n"); - sprintf(big_buf, "%s %%vd[ %s ] %%vd( %s ) %s", - model_name, ctrl_node_str, node_str, model_name); - a_card = xx_new_line(NULL, copy(big_buf), *(line_number)++, 0); - *a_card->li_line = 'a'; + m_instance = tprintf("%s %%vd[ %s ] %%vd( %s ) %s", + model_name, ctrl_node_str, node_str, model_name); + m_instance[0] = 'a'; + a_card = xx_new_line(NULL, m_instance, *(line_number)++, 0); - sprintf(big_buf, ".model %s multi_input_pwl ( x = [%s %s] y = [%s %s] model = \"%s\" )", - model_name, xy_values1[0], xy_values2[0], - xy_values1[1], xy_values2[1], fcn_name); - model_card = xx_new_line(NULL, copy(big_buf), (*line_number)++, 0); + m_model = tprintf(".model %s multi_input_pwl ( x = [%s %s] y = [%s %s] model = \"%s\" )", + model_name, xy_values1[0], xy_values2[0], + xy_values1[1], xy_values2[1], fcn_name); + model_card = xx_new_line(NULL, m_model, (*line_number)++, 0); tfree(model_name); tfree(node_str); @@ -2495,7 +2495,6 @@ inp_get_params(char *line, char *param_names[], char *param_values[]) char *equal_ptr = strchr(line, '='); char *end, *name, *value; int num_params = 0; - char tmp_str[1000]; char keep; bool is_expression = FALSE; @@ -2526,12 +2525,16 @@ inp_get_params(char *line, char *param_names[], char *param_values[]) keep = *end; *end = '\0'; - if (*value != '{' && - !(isdigit(*value) || (*value == '.' && isdigit(value[1])))) { - sprintf(tmp_str, "{%s}", value); - value = tmp_str; + if (*value == '{' || + isdigit(*value) || + (*value == '.' && isdigit(value[1]))) + { + value = copy(value); + } else { + value = tprintf("{%s}", value); } - param_values[num_params-1] = strdup(value); + + param_values[num_params-1] = value; *end = keep; line = end;