=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cdio/cddb.c,v retrieving revision 1.4 retrieving revision 1.5 diff -c -r1.4 -r1.5 *** src/usr.bin/cdio/cddb.c 2002/04/18 22:17:04 1.4 --- src/usr.bin/cdio/cddb.c 2002/12/14 21:28:08 1.5 *************** *** 1,4 **** ! /* $OpenBSD: cddb.c,v 1.4 2002/04/18 22:17:04 espie Exp $ */ /* * Copyright (c) 2002 Marc Espie. * --- 1,4 ---- ! /* $OpenBSD: cddb.c,v 1.5 2002/12/14 21:28:08 espie Exp $ */ /* * Copyright (c) 2002 Marc Espie. * *************** *** 46,52 **** char * get_line(FILE *); char * get_answer(FILE *); void verify_track_names(char **, int, struct cd_toc_entry *); ! char * safe_copy(const char *); unsigned long cddb_sum(unsigned long v) --- 46,52 ---- char * get_line(FILE *); char * get_answer(FILE *); void verify_track_names(char **, int, struct cd_toc_entry *); ! void safe_copy(char **, const char *); unsigned long cddb_sum(unsigned long v) *************** *** 99,109 **** #define MAXSIZE 256 char copy_buffer[MAXSIZE]; ! char * ! safe_copy(const char *title) { strnvis(copy_buffer, title, MAXSIZE-1, VIS_TAB|VIS_NL); ! return strdup(copy_buffer); } int --- 99,119 ---- #define MAXSIZE 256 char copy_buffer[MAXSIZE]; ! void ! safe_copy(char **p, const char *title) { strnvis(copy_buffer, title, MAXSIZE-1, VIS_TAB|VIS_NL); ! if (*p == NULL) ! *p = strdup(copy_buffer); ! else { ! char *n = malloc(strlen(*p) + strlen(copy_buffer) + 1); ! if (n == NULL) ! return; ! strcpy(n, *p); ! strcat(n, copy_buffer); ! free(*p); ! *p = n; ! } } int *************** *** 342,348 **** continue; if (k >= n) continue; ! result[k] = safe_copy(end); } fprintf(cout, "QUIT\r\n"); verify_track_names(result, n, e); --- 352,358 ---- continue; if (k >= n) continue; ! safe_copy(&result[k], end); } fprintf(cout, "QUIT\r\n"); verify_track_names(result, n, e);