=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/rcs.c,v retrieving revision 1.27 retrieving revision 1.28 diff -c -r1.27 -r1.28 *** src/usr.bin/cvs/rcs.c 2005/03/02 04:19:34 1.27 --- src/usr.bin/cvs/rcs.c 2005/03/03 21:02:23 1.28 *************** *** 1,4 **** ! /* $OpenBSD: rcs.c,v 1.27 2005/03/02 04:19:34 jfb Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcs.c,v 1.28 2005/03/03 21:02:23 jfb Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. *************** *** 213,225 **** } memset(rfp, 0, sizeof(*rfp)); - if ((rfp->rf_head = rcsnum_parse(RCS_HEAD_INIT)) == NULL) { - free(rfp); - return (NULL); - } - if ((rfp->rf_branch = rcsnum_alloc()) == NULL) { - rcsnum_free(rfp->rf_head); free(rfp); return (NULL); } --- 213,219 ---- *************** *** 227,233 **** if ((rfp->rf_path = strdup(path)) == NULL) { cvs_log(LP_ERRNO, "failed to duplicate RCS file path"); rcsnum_free(rfp->rf_branch); - rcsnum_free(rfp->rf_head); free(rfp); return (NULL); } --- 221,226 ---- *************** *** 324,330 **** struct rcs_sym *symp; struct rcs_delta *rdp; ! if ((rfp->rf_flags & RCS_SYNCED) || (rfp->rf_ndelta == 0)) return (0); fp = fopen(rfp->rf_path, "w"); --- 317,323 ---- struct rcs_sym *symp; struct rcs_delta *rdp; ! if (rfp->rf_flags & RCS_SYNCED) return (0); fp = fopen(rfp->rf_path, "w"); *************** *** 334,340 **** return (-1); } ! rcsnum_tostr(rfp->rf_head, numbuf, sizeof(numbuf)); fprintf(fp, "head\t%s;\n", numbuf); fprintf(fp, "access;\n"); --- 327,337 ---- return (-1); } ! if (rfp->rf_head != NULL) ! rcsnum_tostr(rfp->rf_head, numbuf, sizeof(numbuf)); ! else ! numbuf[0] = '\0'; ! fprintf(fp, "head\t%s;\n", numbuf); fprintf(fp, "access;\n"); *************** *** 718,723 **** --- 715,723 ---- BUF *rbuf; struct rcs_delta *rdp = NULL; + if (rfp->rf_head == NULL) + return (NULL); + res = rcsnum_cmp(rfp->rf_head, rev, 0); if (res == 1) { cvs_log(LP_ERR, "sorry, can't travel in the future yet"); *************** *** 1094,1099 **** --- 1094,1104 ---- } if (tok == RCS_TOK_HEAD) { + if (rfp->rf_head == NULL) { + rfp->rf_head = rcsnum_alloc(); + if (rfp->rf_head == NULL) + return (-1); + } rcsnum_aton(RCS_TOKSTR(rfp), NULL, rfp->rf_head); } else if (tok == RCS_TOK_BRANCH) {