We are currently at 1.11.14 and are experiencing a problem when we try to use the -p and -r flags on checkout against a file with a tag that has not been added to CVSROOT/val-tags yet.
We end up taking the assert in do_recursion which checks to validate that repository != NULL after getting it from frame.repository. I am wondering if this has been fixed in the 1.11.17 or 1.11.18 releases. I traced a bit and this is what I saw: checkout_proc calls tag_check_valid and passes a NULL for the repository. This is in the code snippet below: /* * If we are going to be updating to stdout, we need to cd to the * repository directory so the recursion processor can use the current * directory as the place to find repository information */ if (pipeout) { if ( CVS_CHDIR (repository) < 0) { error (0, errno, "cannot chdir to %s", repository); err = 1; goto out; } which = W_REPOS; if (tag != NULL && !tag_validated) { tag_check_valid (tag, argc - 1, argv + 1, 0, aflag, NULL); tag_validated = 1; } } else ... tag_check_valid doesn't find the tag in CVSROOT/val-tags yet, so it proceeds to check the files. It calls start_recursion passing the NULL repository and which set to W_REPOS | W_ATTIC. start_recursion saves the NULL repository in frame.repository. The following snippet is then called: /* At this point we have looped over all named arguments and built a coupla lists. Now we unroll the lists, setting up and calling do_recursion. */ err += walklist (files_by_dir, unroll_files_proc, (void *) &frame); dellist(&files_by_dir); unroll_files_proc calls do_recursion passing the frame with frame.repository being NULL and frame.which being W_REPOS | W_ATTIC. do_recursion then takes the else side of the following snippet and asserts. /* * Fill in repository with the current repository */ if (frame->which & W_LOCAL) { if (isdir (CVSADM)) { repository = Name_Repository ((char *) NULL, update_dir); srepository = repository; /* remember what to free */ } else repository = NULL; } else { repository = frame->repository; assert ( repository != NULL ); assert ( strstr ( repository, "/./" ) == NULL ); } BTW, this happens using both local access and pserver access. John C. Elgin _______________________________________________ Info-cvs mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/info-cvs