From owner-p4-projects@FreeBSD.ORG Thu Aug 16 19:39:57 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4375416A41B; Thu, 16 Aug 2007 19:39:57 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 132B116A419 for ; Thu, 16 Aug 2007 19:39:57 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 00D2113C494 for ; Thu, 16 Aug 2007 19:39:57 +0000 (UTC) (envelope-from fli@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l7GJdul7010717 for ; Thu, 16 Aug 2007 19:39:56 GMT (envelope-from fli@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l7GJduet010714 for perforce@freebsd.org; Thu, 16 Aug 2007 19:39:56 GMT (envelope-from fli@FreeBSD.org) Date: Thu, 16 Aug 2007 19:39:56 GMT Message-Id: <200708161939.l7GJduet010714@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fli@FreeBSD.org using -f From: Fredrik Lindberg To: Perforce Change Reviews Cc: Subject: PERFORCE change 125232 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Aug 2007 19:39:57 -0000 http://perforce.freebsd.org/chv.cgi?CH=125232 Change 125232 by fli@fli_nexus on 2007/08/16 19:39:02 - Pass shared-flag to dbr_ident_add() on shared resources. - Free memory allocated during parse. Affected files ... .. //depot/projects/soc2007/fli-mdns_sd/mdnsd/parse.y#4 edit Differences ... ==== //depot/projects/soc2007/fli-mdns_sd/mdnsd/parse.y#4 (text+ko) ==== @@ -220,10 +220,10 @@ cfg_rrset.cr_ident = $2; } rrset_content EBRACE { - struct cfg_name *cn; - struct cfg_res *cs; - struct cfg_resdata *csd; - int ttl; + struct cfg_name *cn, *cn2; + struct cfg_res *cs, *cs2; + struct cfg_resdata *csd, *csd2; + int flags, ttl; wchar_t *nam, *wp; size_t len; @@ -240,23 +240,30 @@ cfg_rrset.cr_ident, (cfg_rrset.cr_shared ? " (shared)" : ""), cfg_rrset.cr_namcount); - dbr_ident_add(dbr, cfg_rrset.cr_ident); - TAILQ_FOREACH(cn, &cfg_rrset.cr_names, cn_next) { + flags = 0; + if (cfg_rrset.cr_shared) + flags |= DBI_SHARED; + + dbr_ident_add(dbr, cfg_rrset.cr_ident, flags); + TAILQ_FOREACH_SAFE(cn, &cfg_rrset.cr_names, cn_next, cn2) { dprintf(DEBUG_CFGPARSE, " %s", cn->cn_name); len = strlen(cn->cn_name) + 1; nam = malloc(len * sizeof(wchar_t)); mbstowcs(nam, cn->cn_name, len); dbr_name_add(dbr, cfg_rrset.cr_ident, nam); free(nam); + + TAILQ_REMOVE(&cfg_rrset.cr_names, cn, cn_next); + free(cn); } dprintf(DEBUG_CFGPARSE, "rrset resources"); - TAILQ_FOREACH(cs, &cfg_rrset.cr_res, cs_next) { + TAILQ_FOREACH_SAFE(cs, &cfg_rrset.cr_res, cs_next, cs2) { dprintf(DEBUG_CFGPARSE, " type %d", cs->cs_type); ttl = cs->cs_ttl > 0 ? cs->cs_ttl : (cfg_rrset.cr_ttl > 0 ? cfg_rrset.cr_ttl : (cfg_rrset.cr_shared ? cfg_ttl_shared : cfg_ttl)); - TAILQ_FOREACH(csd, &cs->cs_data, csd_next) { + TAILQ_FOREACH_SAFE(csd, &cs->cs_data, csd_next, csd2) { dprintf(DEBUG_CFGPARSE, " data = %s, ttl = %d", csd->csd_data, ttl); @@ -272,10 +279,19 @@ dbr_res_add(dbr, cfg_rrset.cr_ident, mdns_c_in, cs->cs_type, ttl, wp, 0); + + free(wp); } + TAILQ_REMOVE(&cs->cs_data, csd, csd_next); + free(csd); } + + TAILQ_REMOVE(&cfg_rrset.cr_res, cs, cs_next); + free(cs); } + free(cfg_rrset.cr_ident); + dprintf(DEBUG_CFGPARSE, "end of rrset statement"); } ;