=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/rcs.c,v retrieving revision 1.142 retrieving revision 1.143 diff -c -r1.142 -r1.143 *** src/usr.bin/cvs/rcs.c 2006/03/11 18:40:14 1.142 --- src/usr.bin/cvs/rcs.c 2006/03/11 22:44:11 1.143 *************** *** 1,4 **** ! /* $OpenBSD: rcs.c,v 1.142 2006/03/11 18:40:14 niallo Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcs.c,v 1.143 2006/03/11 22:44:11 niallo Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. *************** *** 1264,1272 **** time_t now; struct passwd *pw; struct rcs_delta *ordp, *rdp; - RCSNUM *old; - old = rcsnum_alloc(); if (rev == RCS_HEAD_REV) { if (rf->rf_flags & RCS_CREATE) { if ((rev = rcsnum_parse(RCS_HEAD_INIT)) == NULL) --- 1264,1270 ---- *************** *** 1274,1297 **** rf->rf_head = rcsnum_alloc(); rcsnum_cpy(rev, rf->rf_head, 0); } else { - rcsnum_cpy(rf->rf_head, old, 0); rev = rcsnum_inc(rf->rf_head); } } else { if ((rdp = rcs_findrev(rf, rev)) != NULL) { rcs_errno = RCS_ERR_DUPENT; - rcsnum_free(old); return (-1); } - - if (!(rf->rf_flags & RCS_CREATE)) { - ordp = NULL; - rcsnum_cpy(rev, old, 0); - while (ordp == NULL) { - old = rcsnum_dec(old); - ordp = rcs_findrev(rf, old); - } - } } if ((pw = getpwuid(getuid())) == NULL) --- 1272,1284 ---- *************** *** 1308,1317 **** rdp->rd_next = rcsnum_alloc(); ! if (!(rf->rf_flags & RCS_CREATE)) ! rcsnum_cpy(old, rdp->rd_next, 0); - rcsnum_free(old); if (username == NULL) username = pw->pw_name; --- 1295,1306 ---- rdp->rd_next = rcsnum_alloc(); ! if (!(rf->rf_flags & RCS_CREATE)) { ! /* next should point to the previous HEAD */ ! ordp = TAILQ_FIRST(&(rf->rf_delta)); ! rcsnum_cpy(ordp->rd_num, rdp->rd_next, 0); ! } if (username == NULL) username = pw->pw_name; *************** *** 2970,2977 **** oldrev = rcsnum_alloc(); rcsnum_cpy(rev, oldrev, 0); ! if (rcsnum_dec(oldrev) == NULL) goto out; l = snprintf(copyfile, sizeof(copyfile), ".#%s.%s", cf->cf_name, rcsnum_tostr(oldrev, buf, sizeof(buf))); --- 2959,2967 ---- oldrev = rcsnum_alloc(); rcsnum_cpy(rev, oldrev, 0); ! if (oldrev->rn_id[oldrev->rn_len - 1] <= 0) goto out; + oldrev = rcsnum_dec(oldrev); l = snprintf(copyfile, sizeof(copyfile), ".#%s.%s", cf->cf_name, rcsnum_tostr(oldrev, buf, sizeof(buf)));