From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeff Shaw Subject: [PATCH] eal: remove variable length array Date: Fri, 14 Dec 2018 08:38:27 -0800 Message-ID: <20181214163827.9403-1-jeffrey.b.shaw@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: jeffrey.b.shaw@intel.com To: dev@dpdk.org Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id E82FC1B8FF for ; Fri, 14 Dec 2018 17:42:07 +0100 (CET) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Compilers that do not support the C11 standard, or do not implement gcc extensions, may not support variable length arrays. The code prior to this commit produced the following warning when compiled with "-Wvla -std=c90". warning: ISO C90 forbids variable length array ‘array’ [-Wvla] This commit removes the variable length array from the PMD debug trace function by allocating memory dynamically on the stack using alloca(). Signed-off-by: Jeff Shaw --- lib/librte_eal/common/include/rte_dev.h | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h index a9724dc91..af772872b 100644 --- a/lib/librte_eal/common/include/rte_dev.h +++ b/lib/librte_eal/common/include/rte_dev.h @@ -47,22 +47,21 @@ __attribute__((format(printf, 2, 0))) static inline void rte_pmd_debug_trace(const char *func_name, const char *fmt, ...) { + char *buffer; + int buf_len; va_list ap; va_start(ap, fmt); + buf_len = vsnprintf(NULL, 0, fmt, ap) + 1; + va_end(ap); - { - char buffer[vsnprintf(NULL, 0, fmt, ap) + 1]; + buffer = (char *)alloca(buf_len); - va_end(ap); - - va_start(ap, fmt); - vsnprintf(buffer, sizeof(buffer), fmt, ap); - va_end(ap); + va_start(ap, fmt); + vsnprintf(buffer, buf_len, fmt, ap); + va_end(ap); - rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD, "%s: %s", - func_name, buffer); - } + rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD, "%s: %s", func_name, buffer); } /* -- 2.14.3