=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/rcs.c,v retrieving revision 1.17 retrieving revision 1.18 diff -c -r1.17 -r1.18 *** src/usr.bin/rcs/rcs.c 2006/06/04 18:57:37 1.17 --- src/usr.bin/rcs/rcs.c 2006/06/09 22:09:33 1.18 *************** *** 1,4 **** ! /* $OpenBSD: rcs.c,v 1.17 2006/06/04 18:57:37 niallo Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: rcs.c,v 1.18 2006/06/09 22:09:33 niallo Exp $ */ /* * Copyright (c) 2004 Jean-Francois Brousseau * All rights reserved. *************** *** 2614,2625 **** c = data; fin = c + len; len++; /* * Keyword formats: * $Keyword$ * $Keyword: value$ */ ! for (; c != fin; c++) { if (*c == '$') { /* remember start of this possible keyword */ start = c; --- 2614,2626 ---- c = data; fin = c + len; len++; + /* * Keyword formats: * $Keyword$ * $Keyword: value$ */ ! for (; c < fin; c++) { if (*c == '$') { /* remember start of this possible keyword */ start = c; *************** *** 2771,2784 **** */ start = data + start_offset; fin = data + len; } ! memcpy(start, expbuf, strlen(expbuf)); ! start += sizdiff; memcpy(start, tbuf, tbuflen); xfree(tbuf); i += sizdiff; } } bp = rcs_buf_alloc(len - 1, BUF_AUTOEXT); rcs_buf_set(bp, data, len - 1, 0); xfree(data); --- 2772,2788 ---- */ start = data + start_offset; fin = data + len; + c = data + c_offset; } ! memcpy(start, expbuf, strlen(expbuf) + 1); ! start += strlen(expbuf); memcpy(start, tbuf, tbuflen); xfree(tbuf); i += sizdiff; + c = start + strlen(expbuf); } } + bp = rcs_buf_alloc(len - 1, BUF_AUTOEXT); rcs_buf_set(bp, data, len - 1, 0); xfree(data);