On 2/14/2021 10:16 AM, Andreas Rheinhardt wrote:
Nuo Mi:
On Mon, Feb 15, 2021 at 2:08 AM Andreas Rheinhardt <
andreas.rheinha...@gmail.com> wrote:

Nuo Mi:
---
  libavutil/opt.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavutil/opt.c b/libavutil/opt.c
index 590146b5fb..c554e9c063 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -1735,7 +1735,7 @@ const AVClass *av_opt_child_class_iterate(const
AVClass *parent, void **iter)
  #if FF_API_CHILD_CLASS_NEXT
  FF_DISABLE_DEPRECATION_WARNINGS
      if (parent->child_class_next) {
-        *iter = parent->child_class_next(*iter);
+        *iter = (void*)parent->child_class_next(*iter);
          return *iter;
      }
  FF_ENABLE_DEPRECATION_WARNINGS

This doesn't look like a fix; you just silenced a warning.

Yes, but this the only way if we do not change the function signature.

Suppressing a warning that something isn't right (i.e. that maybe the function signature *should* be changed) probably isn't ideal, except as a last resort. The fact that the documentation literally says to do the cast this patch is trying to do only compounds the problem.

I can understand wanting to use 'void *' for the context, in order to hide the underlying implementation. But since the documentation has already implied an implementation, hiding it may be moot. However, in any implementation, it really should be 'const void **', as iteration should have no internal side effects.

This leads back to the original statement of not covering up the problem (i.e. no nothing now -- but not just because it's deprecated) and encourage a signature change to be done (at an appropriate API breakage point).


There is another way: Do nothing. The code in question is deprecated and
will therefore eventually be removed.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to