Program: 74200
Project: 74200
Buggy source:
/** 
 * Update connections to subscribers.
 * @exception IllegalActionException If there is already a publisherpublishing on the same channel.
 */
protected void _updateLinks() throws IllegalActionException {
  if (_channel == null) {
    return;
  }
  Iterator subscribers=_findSubscribers().iterator();
  if (_relation != null) {
    try {
      _relation.setContainer(null);
    }
 catch (    NameDuplicationException e) {
      throw new InternalErrorException(e);
    }
    _relation=null;
  }
  NamedObj container=getContainer();
  if (container instanceof TypedCompositeActor) {
    try {
      if (IORelation._USE_NEW_WIDTH_INFERENCE_ALGO) {
        _relation=new TypedIORelation((TypedCompositeActor)container,container.uniqueName("String_Node_Str")){
          public int getWidth() throws IllegalActionException {
            return input.getWidth();
          }
          protected boolean _skipWidthInference(){
            return true;
          }
        }
;
      }
 else {
        _relation=new TypedIORelation((TypedCompositeActor)container,container.uniqueName("String_Node_Str"));
      }
      _relation.setPersistent(false);
      new Parameter(_relation,"String_Node_Str",BooleanToken.TRUE);
      if (!IORelation._USE_NEW_WIDTH_INFERENCE_ALGO) {
        _relation.setWidth(input.getWidth());
      }
    }
 catch (    NameDuplicationException e) {
      throw new InternalErrorException(e);
    }
    output.link(_relation);
    while (subscribers.hasNext()) {
      Subscriber subscriber=(Subscriber)subscribers.next();
      subscriber.input.liberalLink(_relation);
    }
  }
  Director director=getDirector();
  if (director != null) {
    director.invalidateSchedule();
    director.invalidateResolvedTypes();
  }
  _updatedLinks=true;
}

Fixed version (ground truth):
/** 
 * Update connections to subscribers.
 * @exception IllegalActionException If there is already a publisherpublishing on the same channel.
 */
protected void _updateLinks() throws IllegalActionException {
  if (_channel == null) {
    return;
  }
  Iterator subscribers=_findSubscribers().iterator();
  if (_relation != null) {
    try {
      _relation.setContainer(null);
    }
 catch (    NameDuplicationException e) {
      throw new InternalErrorException(e);
    }
    _relation=null;
  }
  NamedObj container=getContainer();
  if (container instanceof TypedCompositeActor) {
    try {
      _relation=new TypedIORelation((TypedCompositeActor)container,container.uniqueName("String_Node_Str"));
      _relation.setPersistent(false);
      new Parameter(_relation,"String_Node_Str",BooleanToken.TRUE);
      if (!IORelation._USE_NEW_WIDTH_INFERENCE_ALGO) {
        _relation.setWidth(input.getWidth());
      }
    }
 catch (    NameDuplicationException e) {
      throw new InternalErrorException(e);
    }
    output.link(_relation);
    while (subscribers.hasNext()) {
      Subscriber subscriber=(Subscriber)subscribers.next();
      subscriber.input.liberalLink(_relation);
    }
  }
  Director director=getDirector();
  if (director != null) {
    director.invalidateSchedule();
    director.invalidateResolvedTypes();
  }
  _updatedLinks=true;
}