From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id A41524481C for ; Sun, 27 Nov 2022 13:58:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DF5916807E2; Sun, 27 Nov 2022 15:58:35 +0200 (EET) Received: from mail-oi1-f175.google.com (mail-oi1-f175.google.com [209.85.167.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7FE2768AC00 for ; Sun, 27 Nov 2022 15:58:29 +0200 (EET) Received: by mail-oi1-f175.google.com with SMTP id n205so9115810oib.1 for ; Sun, 27 Nov 2022 05:58:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=WWW5ggw8SM6k7l6VY+yLJXyYN5yAo2D/AeEIRuvYuDg=; b=b0zpZmsL/O9RIDRxH8p2M2CGHDrxb3wUGA/U4pyWpFAf+y7xxyYRf73ZpdlPyiVPVg PQHXvZ3JGdc/Yoj3culd1AUzL3NYl1Ar8qLNf5X6ZocK6aCPuFSXK0wqF/T7RM1En4c7 sKRRcBI7tFrMiv8cLqiS2Z+30fCh5gTfiZ/0N59BB/rmEQO749CWGJVdmIuwH4sHMUIe cQhLaRqTA5HwmU+pIJalWFylnkpy8a5maKg1EV5SSOrgUEwz1iSM20D9LUkD5nXnNQxF sR0Dnp3AwdQrNhnpuRHQbA1j4ytpSA3RsBPEG+/hWgDOiziY65mxM2sm53Uvofrkxu73 BeFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=WWW5ggw8SM6k7l6VY+yLJXyYN5yAo2D/AeEIRuvYuDg=; b=aSgYM5WY5lt3B/uB0gK3k/80Z7h3sMS3+7sHHWW3+QogmFhLk1S2OZ0B3yy6mUhZHE TsCaYRRfYGxVh9rwLQtrFJaCgwSM0qQLIdGFUZ3hTp7mIkrE9Y1fDhPErqB5tVkrZn/D r1mBbnF49wvgUJGrAP6WgPn6DcyYmJOvXoHSeAHT2cijcKs+TVXmeUVGFDzFfJ5o7BlF KHZ3/WTuJN35mAZR4ZHhbPNWs0HRhkUf5vslPCue1r2unDzlI0bev9SOoejW/jjC/tlE KYxW733Rs09gnmVsD0NV9ScUP8uDvscArPHHOkDvp9LmLGZQ0/d8yLAWP4/HzMoRGk0k 8A/A== X-Gm-Message-State: ANoB5pnHGNLwbDLN7lJRJ9uh3LkkoFxZvVtBZl0NqlG4cLULYmCCJDYL TNsr2PqDJFDntXvkx6LCTnEnXJ1to1M= X-Google-Smtp-Source: AA0mqf4WQoW4zJ3qkl8bmO3TQZAUKKqHwdJOwSU3k813feGtAp5xKtVNYR+6KnCX0K5xhLQZrYnMrA== X-Received: by 2002:a05:6808:2194:b0:35b:9cc2:bfa6 with SMTP id be20-20020a056808219400b0035b9cc2bfa6mr4040780oib.124.1669557507317; Sun, 27 Nov 2022 05:58:27 -0800 (PST) Received: from [192.168.0.15] ([181.85.72.69]) by smtp.gmail.com with ESMTPSA id i23-20020a9d68d7000000b0066e46f2688fsm1057069oto.6.2022.11.27.05.58.25 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 27 Nov 2022 05:58:26 -0800 (PST) Message-ID: <7f99f440-74c4-e14c-544e-6008e88edbbd@gmail.com> Date: Sun, 27 Nov 2022 10:59:14 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 To: ffmpeg-devel@ffmpeg.org References: <20221125013046.40904-1-epirat07@gmail.com> <20221125013046.40904-8-epirat07@gmail.com> <4741D7B7-1FD9-401F-81FD-C5E5AB05EDBF@gmail.com> Content-Language: en-US From: James Almer In-Reply-To: <4741D7B7-1FD9-401F-81FD-C5E5AB05EDBF@gmail.com> Subject: Re: [FFmpeg-devel] [PATCH 07/31] avutil: use av_dict_iterate X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On 11/26/2022 11:42 AM, Marvin Scholz wrote: > > > On 25 Nov 2022, at 13:50, Andreas Rheinhardt wrote: > >> Marvin Scholz: >>> --- >>> libavutil/opt.c | 12 ++++++------ >>> libavutil/tests/dict.c | 10 +++++----- >>> 2 files changed, 11 insertions(+), 11 deletions(-) >>> >>> diff --git a/libavutil/opt.c b/libavutil/opt.c >>> index a3940f47fb..0a909a8b22 100644 >>> --- a/libavutil/opt.c >>> +++ b/libavutil/opt.c >>> @@ -1742,14 +1742,14 @@ void av_opt_free(void *obj) >>> >>> int av_opt_set_dict2(void *obj, AVDictionary **options, int search_flags) >>> { >>> - AVDictionaryEntry *t = NULL; >>> + const AVDictionaryEntry *t = NULL; >>> AVDictionary *tmp = NULL; >>> int ret; >>> >>> if (!options) >>> return 0; >>> >>> - while ((t = av_dict_get(*options, "", t, AV_DICT_IGNORE_SUFFIX))) { >>> + while ((t = av_dict_iterate(*options, t))) { >>> ret = av_opt_set(obj, t->key, t->value, search_flags); >>> if (ret == AVERROR_OPTION_NOT_FOUND) >>> ret = av_dict_set(&tmp, t->key, t->value, 0); >>> @@ -2137,16 +2137,16 @@ FF_ENABLE_DEPRECATION_WARNINGS >>> case AV_OPT_TYPE_DICT: { >>> AVDictionary *dict1 = NULL; >>> AVDictionary *dict2 = *(AVDictionary **)dst; >>> - AVDictionaryEntry *en1 = NULL; >>> - AVDictionaryEntry *en2 = NULL; >>> + const AVDictionaryEntry *en1 = NULL; >>> + const AVDictionaryEntry *en2 = NULL; >>> ret = av_dict_parse_string(&dict1, o->default_val.str, "=", ":", 0); >>> if (ret < 0) { >>> av_dict_free(&dict1); >>> return ret; >>> } >>> do { >>> - en1 = av_dict_get(dict1, "", en1, AV_DICT_IGNORE_SUFFIX); >>> - en2 = av_dict_get(dict2, "", en2, AV_DICT_IGNORE_SUFFIX); >>> + en1 = av_dict_iterate(dict1, en1); >>> + en2 = av_dict_iterate(dict2, en2); >>> } while (en1 && en2 && !strcmp(en1->key, en2->key) && !strcmp(en1->value, en2->value)); >>> av_dict_free(&dict1); >>> return (!en1 && !en2); >>> diff --git a/libavutil/tests/dict.c b/libavutil/tests/dict.c >>> index d053545f4d..8c05752ea7 100644 >>> --- a/libavutil/tests/dict.c >>> +++ b/libavutil/tests/dict.c >>> @@ -22,8 +22,8 @@ >>> >>> static void print_dict(const AVDictionary *m) >>> { >>> - AVDictionaryEntry *t = NULL; >>> - while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX))) >>> + const AVDictionaryEntry *t = NULL; >>> + while ((t = av_dict_iterate(m, t))) >>> printf("%s %s ", t->key, t->value); >>> printf("\n"); >>> } >>> @@ -94,7 +94,7 @@ int main(void) >>> if (av_dict_get(dict, NULL, NULL, 0)) >>> printf("av_dict_get() does not correctly handle NULL key.\n"); >>> e = NULL; >>> - while ((e = av_dict_get(dict, "", e, AV_DICT_IGNORE_SUFFIX))) >>> + while ((e = av_dict_iterate(dict, e))) >>> printf("%s %s\n", e->key, e->value); >>> av_dict_free(&dict); >>> >>> @@ -106,7 +106,7 @@ int main(void) >>> printf("av_dict_set does not correctly handle NULL key\n"); >>> >>> e = NULL; >>> - while ((e = av_dict_get(dict, "", e, AV_DICT_IGNORE_SUFFIX))) >>> + while ((e = av_dict_iterate(dict, e))) >>> printf("'%s' '%s'\n", e->key, e->value); >>> av_dict_free(&dict); >>> >>> @@ -122,7 +122,7 @@ int main(void) >>> av_dict_set_int(&dict, "12", 1, 0); >>> av_dict_set_int(&dict, "12", 2, AV_DICT_APPEND); >>> e = NULL; >>> - while ((e = av_dict_get(dict, "", e, AV_DICT_IGNORE_SUFFIX))) >>> + while ((e = av_dict_iterate(dict, e))) >>> printf("%s %s\n", e->key, e->value); >>> av_dict_free(&dict); >>> >> >> This stops testing the old iterating pattern; instead it should >> explicitly test that both patterns coincide. >> > > Ok, I've removed this change for now from the pachset > as adding tests is not really what this patchset is about. > > Additionally I do not fully understand how the testing works yet > so I don't know how I could write such a test. This specific test just prints some hardcoded lines plus the output of av_dict_get() to stderr, and compares it with the reference in tests/ref/fate/dict. What could be done is to either print both the output of the av_dict_get() and av_dict_iterate() iterations, or to compare the returned AVDictionaryEntry on each iteration and if they differ, print a line about it. I can send a patch for that later. > >> - Andreas >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".