Package: vlc / 3.0.21-11
Metadata
Package | Version | Patches format |
---|---|---|
vlc | 3.0.21-11 | 3.0 (quilt) |
Patch series
view the series filePatch | File delta | Description |
---|---|---|
0001 configure fix linking on RISC V ISA.patch | (download) |
configure.ac |
1 1 + 0 - 0 ! |
configure: fix linking on risc-v isa |
0002 Do not generate cache during build.patch | (download) |
Makefile.am |
16 0 + 16 - 0 ! |
do not generate cache during build The generated cache is not used in the package. It causes spurious build failures on the arm64 and ppc64el builds, that are not reproducible elsewhere. |
0003 Bump module ABI for time_t transition.patch | (download) |
include/vlc_plugin.h |
4 2 + 2 - 0 ! |
bump module abi for time_t transition |
0004 demux image detect ICC profile before JFIF data.patch | (download) |
modules/demux/image.c |
12 11 + 1 - 0 ! |
demux: image: detect icc profile before jfif data Fixes #18857 (cherry picked from commit 5ffd36ffa26a83ae498373f7d0ace1d82ab952f4) Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz> |
0005 demux avi do not set up invalid bitsperpixel.patch | (download) |
modules/demux/avi/avi.c |
3 2 + 1 - 0 ! |
demux: avi: do not set up invalid bitsperpixel UINT16_MAX is set and propagated from the bitmap header reader refs #28661 |
0006 opus_header fix channel mapping family 1 parsing.patch | (download) |
modules/codec/opus_header.c |
2 1 + 1 - 0 ! |
opus_header: fix channel mapping family 1 parsing Fixes #27808 (cherry picked from commit 79fa6af0a98921f9d34933761f4fe20ef6c35309) |
0007 vlc_common remove warnings on VLC_OBJECT.patch | (download) |
include/vlc_common.h |
4 2 + 2 - 0 ! |
vlc_common: remove warnings on vlc_object Fix an infinite amount of warnings on Darwin: ../../include/vlc_variables.h:563:5: warning: due to lvalue conversion of the controlling expression, association of type 'const struct vlc_common_members' will never be selected because it is qualified [-Wunreachable-code-generic-assoc] var_Create( p_obj, psz_name, VLC_VAR_STRING | VLC_VAR_DOINHERIT ^ ../../include/vlc_variables.h:122:39: note: expanded from macro 'var_Create' #define var_Create(a,b,c) var_Create( VLC_OBJECT(a), b, c ) ^ ../../include/vlc_common.h:481:15: note: expanded from macro 'VLC_OBJECT' const struct vlc_common_members: (const vlc_object_t *)(&(x)->obj) \ |
0008 transcode fix destructive assignment after drain.patch | (download) |
modules/stream_out/transcode/video.c |
2 1 + 1 - 0 ! |
transcode: fix destructive assignment after drain The drain checks are done after the first encoder output fetch. At this point, `out` is already filled with some frames gotten from the encoder some lines above: ``` // ... if( p_sys->i_threads >= 1 ) { /* Pick up any return data the encoder thread wants to output. */ vlc_mutex_lock( &p_sys->lock_out ); *out = p_sys->p_buffers; p_sys->p_buffers = NULL; vlc_mutex_unlock( &p_sys->lock_out ); } // ... ``` This assignment currently leaks all previously gathered frames to replace them by the drained output. This patch appends the drained frames to the existing output instead. |
0009 transcode fix picture fifo leak.patch | (download) |
modules/stream_out/transcode/video.c |
17 10 + 7 - 0 ! |
transcode: fix picture fifo leak Draining sets the abort flag. It was skipping the picture fifo deletion before. |
0010 sftp fix seek for large files on 32 bit OS.patch | (download) |
modules/access/sftp.c |
2 1 + 1 - 0 ! |
sftp: fix seek for large files on 32-bit os (cherry picked from commit 4698e0336447de8dc6f7214743082cc55b6ebd77) |
0011 qt hardcode the name of the shortcut for the AMD VQ .patch | (download) |
modules/gui/qt/components/preferences_widgets.cpp |
10 8 + 2 - 0 ! |
qt: hardcode the name of the shortcut for the amd vq enhancer Otherwise the name is the same of the DLL which doesn't correspond to the shortcut we need to use. Fixes #28691 |
0012 packetizer h264 fix reading prediction weight tables.patch | (download) |
modules/packetizer/h264_nal.c |
4 2 + 2 - 0 ! |
packetizer: h264: fix reading prediction weight tables (cherry picked from commit f878115e184a4d896e4df39bccbde32ea6d9357c) |
0013 demux adaptive fix start with indexes only.patch | (download) |
modules/demux/adaptive/SegmentTracker.cpp |
6 3 + 3 - 0 ! |
demux: adaptive: fix start with indexes only refs #28683 (cherry picked from commit 9f9c466bc14c1dcd75564c7cd18d031ea9e76325) |
0014 UPnP remove SAT IP channel list fallback.patch | (download) |
modules/services_discovery/upnp.cpp |
125 31 + 94 - 0 ! |
upnp: remove sat>ip channel list fallback When introducing SAT>IP support, we added a fallback mechanism on officially published channel lists in case the user neither specified a custom list nor the used set-top box provided one. With the end of the SAT>IP Alliance that was dissolved 3 years ago, the fallback server is no longer available and there will be no replacement so this feature was removed. Fixes #28684 (cherry picked from commit 3df7b6e1187030591febd8e1bdd2712c0d6af132) |
0015 spectrogram fix FFT result scaling factor.patch | (download) |
modules/visualization/glspectrum.c |
8 5 + 3 - 0 ! |
spectrogram: fix fft result scaling factor MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit This function is just a scaling operation that passes a value between 0 and FFT_SCALING_VALUE to a value between 0 and 2^16-1. It is therefore a power that must be applied here and not a xor. Moreover, the initial formula was quite wrong since it was assuming that the max_input value, which is a signed int 16, was 2^15 = 32768 where it is in fact 2^15-1=32767. Moreover, the initial formula wasn't taking into account that, since the output of the fft_perform is the sum of two variables which have for max value (FFT_BUFFER_SIZE / 2 * INT16_MAX)^2, then we need to multiply the final max value by 2. Corrects the following compiler warnings: visualization/glspectrum.c:528:43: warning: result of 2^16 is 18; did you mean 1 << 16 (65536)? [-Wxor-used-as-pow] visualization/visual/effects.c:216:40: warning: result of 2^16 is 18; did you mean 1 << 16 (65536)? [-Wxor-used-as-pow] Fixes #28506 Co-authored-by: Disha Baghel <bagheldisha708@gmail.com> (cherry picked from commit 77a08a60f72bda081d144119e4d0a57a9c3c72f6) |
0016 spectrogram convert int16 to unsigned for correct ra.patch | (download) |
modules/visualization/glspectrum.c |
2 1 + 1 - 0 ! |
spectrogram: convert int16 to unsigned for correct range p_dest is used to set the height of the column, and it is used as a variable defined from zero to 2^16 - 1. It is therefore considered in the rest of the program as an unsigned int 16. Moreover, the value that we put inside are a sum of two squared real value, so they are necessarily positive. (cherry picked from commit 94a8d152eadd53073305c95d221eca7623b4ed6c) |
0017 spectrogram allows better visualization of low frequ.patch | (download) |
modules/visualization/glspectrum.c |
7 5 + 2 - 0 ! |
spectrogram: allows better visualization of low frequencies In some cases, Y which represents the height of a column was equal to 1 and therefore when passed through the log, the output displayed was zero, by adding this 0.1, this allows you to see a column when y = 1 without really changing the height of each column (cherry picked from commit c347fed91e76bd31387171e1ff67224c21194362) |
0018 magnify check the image conversion worked.patch | (download) |
modules/video_filter/magnify.c |
10 10 + 0 - 0 ! |
magnify: check the image conversion worked return NULL on failure as we cannot produce the required output. Fixes #28707 (cherry picked from commit 990de75bc0a7db5f2c4e4cb88e868b75b689ac7d) (rebased) rebased: - picture_CopyPixels is called picture_CopyVisiblePixels on 4.0 Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz> |
0019 opencv check the image conversion worked.patch | (download) |
modules/video_filter/opencv_wrapper.c |
13 10 + 3 - 0 ! |
opencv: check the image conversion worked Otherwise we release the output picture that would have been used and returned. (cherry picked from commit 19813291fcfb31ddd91a2e4d0f1d37ad3239d300) (rebased) rebased: - p_filter->p_sys is p_sys on 4.0 Signed-off-by: Steve Lhomme <robux4@ycbcr.xyz> |
0020 packetizer hxxx_common rename function pointer.patch | (download) |
modules/packetizer/hxxx_common.c |
3 2 + 1 - 0 ! |
packetizer: hxxx_common: rename function pointer (cherry picked from commit 6e7b32f64db918b3aa2deefe885571b734d32f53) |
0021 packetizer hxxx pass opaque to callbacks instead of .patch | (download) |
modules/packetizer/h264.c |
9 7 + 2 - 0 ! |
packetizer: hxxx: pass opaque to callbacks instead of decoder (cherry picked from commit 09655dea51c0d383cc86c0f5020e3bea160c69bf) |
0022 packetizer hxxx add missing drain for non annexb con.patch | (download) |
modules/packetizer/h264.c |
2 1 + 1 - 0 ! |
packetizer: hxxx: add missing drain for non annexb content (cherry picked from commit 4f0a39ada1bd9314601e80d7f48855462524d1fc) |
0023 demux asf add missing subpayloads drain on EOF.patch | (download) |
modules/demux/asf/asf.c |
8 8 + 0 - 0 ! |
demux: asf: add missing subpayloads drain on eof refs #28716 (cherry picked from commit 6bf0a1407b5b9aef792ef94a57142254d079e8fd) |
0024 demux AVI insert packetizer for XVID MPEG 4 video.patch | (download) |
modules/demux/avi/avi.c |
1 1 + 0 - 0 ! |
demux: avi insert packetizer for xvid mpeg-4 video Older DivX-encoded videos commonly use an method called packed bitstream which puts several video frames into a single AVI chunk. Since Packed bitstream isn't standard MPEG-4 it causes playback issues with some hw decoders. (cherry picked from commit 980e4d7449e9e06bef525d9049dff5b9b5ecd673) |
0025 codec videotoolbox remove sw decoder fallback for mp.patch | (download) |
modules/codec/videotoolbox.m |
5 0 + 5 - 0 ! |
codec: videotoolbox: remove sw decoder fallback for mp4v commit 7a2bf498d545d500d30636970fa930eb54de5569 insert packetizer for xvid mpeg4 video, so now hw decoder can decode xvid encoded video without any playback issues. (cherry picked from commit a9343f68bb19a1c20e45e1029848326020b0c69e) |
0026 Use vlc_fourcc_GetCodec to map XVID to MP4V.patch | (download) |
modules/demux/avi/avi.c |
2 1 + 1 - 0 ! |
use `vlc_fourcc_getcodec` to map xvid to mp4v |
0027 dav1d treat RGB formats separately.patch | (download) |
modules/codec/dav1d.c |
59 26 + 33 - 0 ! |
dav1d: treat rgb formats separately This avoids incorrectly matching as GBR. Fixes #28763 which was missing checks for the matrix and primaries. This also replaces the loop with a constant-time lookup. (cherry picked from commit ece317a245e8c32a5efc11d5e82dcd8a28a2f10b) |
0028 dav1d add dav1d all layers flag.patch | (download) |
modules/codec/dav1d.c |
4 4 + 0 - 0 ! |
dav1d: add dav1d-all-layers flag This will output all spatial layers if requested, defaults to false (the built-in dav1d behavior would defaults this to true). Fix suggested-by Maryla Ustarroz Fixes #28776 (cherry picked from commit 6ffede3f445586e5d368de936666cabb84f6a16f) |
0029 dts_header initialize SUBSTREAM_LBR size to 0.patch | (download) |
modules/packetizer/dts_header.c |
1 1 + 0 - 0 ! |
dts_header: initialize substream_lbr size to 0 It's a substream and can't work alone, so a size of 0 is legitimate. Fixes #28773 (Use of uninitialised value) (cherry picked from commit b23f09b258dc63c2221af502ec856630f68817e5) Signed-off-by: Thomas Guillem <thomas@gllm.fr> |
0030 packetizer dts check for frame_size for the first sy.patch | (download) |
modules/packetizer/dts.c |
3 2 + 1 - 0 ! |
packetizer: dts: check for frame_size for the first sync Only substreams are allowed to have a frame_size of 0. (cherry picked from commit 16b31aa57e3919dbe661c213868dee4b8bc1e3bd) Signed-off-by: Thomas Guillem <thomas@gllm.fr> |
0031 aom make BGR matching stricter.patch | (download) |
modules/codec/aom.c |
41 23 + 18 - 0 ! |
aom: make bgr matching stricter This is equivalent to the fix in ece317a245e8c32a5efc11d5e82dcd8a28a2f10b as the aom decoder had the same issue reported in #28776. (cherry picked from commit 0001e85a098ee4e6e2526eaec8a76899c2b23b90) |
0032 taglib .m4v are already registered as MP4 files.patch | (download) |
modules/meta_engine/taglib.cpp |
2 0 + 2 - 0 ! |
taglib: .m4v are already registered as mp4 files https://github.com/taglib/taglib/pull/662 (cherry picked from commit 84962e474bfefa242527f7c3ddffe6ed4f697fbe) (rebased) |
0033 modules taglib simplify reading embedded art.patch | (download) |
modules/meta_engine/taglib.cpp |
215 110 + 105 - 0 ! |
modules: taglib: simplify reading embedded art (cherry picked from commit 3533f90eb44398abe6cff1b14ece757654449acf) (rebased) rebased: - 294cbdbaee0209bc88ca7bec9164da8da4ac44ef has been merged above |
0034 taglib IOStream Return the url as fileName.patch | (download) |
modules/meta_engine/taglib.cpp |
4 3 + 1 - 0 ! |
taglib: iostream: return the url as filename Since the only part that matters to taglib is the filename, and more specifically the extension part. (cherry picked from commit 026a76066efa78f1934ab2c177669a2e6a519cff) |
0035 taglib Always use IOStream to read the media.patch | (download) |
modules/meta_engine/taglib.cpp |
35 9 + 26 - 0 ! |
taglib: always use iostream to read the media (cherry picked from commit 4bc7607f31f80264b5e61fbd187f2f8d2f3bb604) (edited) edited: - keep the support for taglib older than 1.11 which doesn't have the proper FileRef constructor to use it - the aacresolver is only called for Taglib 1.11+ on 3.0 |
0036 taglib Enable prefetch cache on the IOStream.patch | (download) |
modules/meta_engine/taglib.cpp |
3 3 + 0 - 0 ! |
taglib: enable prefetch/cache on the iostream We can't do it through vlc_stream_NewURL as it will include the skiptags filter (cherry picked from commit 976cd219465a72daa02d22e60c9ac4c704c0b18b) |
0037 taglib fix Wdeprecated copy warnings.patch | (download) |
modules/meta_engine/taglib.cpp |
51 30 + 21 - 0 ! |
taglib: fix -wdeprecated-copy warnings MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Warnings were happening because we were using copy operator= as the assigned object was already initialized. This patch use the copy constructor or move constructor instead if available. Those warnings were: ../../modules/meta_engine/taglib.cpp: In function void ReadMetaFromXiph(TagLib::Ogg::XiphComment*, demux_meta_t*, vlc_meta_t*): ../../modules/meta_engine/taglib.cpp:672:39: warning: implicitly-declared TagLib::StringList& TagLib::StringList::operator=(const TagLib::StringList&) is deprecated [-Wdeprecated-copy] 672 | list = tag->fieldListMap()[keyName]; \ | ^ ../../modules/meta_engine/taglib.cpp:681:5: note: in expansion of macro SET 681 | SET( "COPYRIGHT", Copyright ); | ^~~ In file included from /usr/include/taglib/fileref.h:30, from ../../modules/meta_engine/taglib.cpp:58: /usr/include/taglib/tstringlist.h:59:5: note: because TagLib::StringList has user-provided TagLib::StringList::StringList(const TagLib::StringList&) 59 | StringList(const StringList &l); | ^~~~~~~~~~ Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org> (cherry picked from commit be4f907a0e834c10277b8217520f745238da1c13) |
0038 meta_engine taglib increment VlcIostream readpos.patch | (download) |
modules/meta_engine/taglib.cpp |
1 1 + 0 - 0 ! |
meta_engine: taglib: increment vlciostream readpos (cherry picked from commit 0cbcf504b43a02ddb7ecc1c65c0c1e82f39b4f1c) |
0039 meta_engine taglib reject read on failed seek.patch | (download) |
modules/meta_engine/taglib.cpp |
19 17 + 2 - 0 ! |
meta_engine: taglib: reject read on failed seek (cherry picked from commit 837b583e4e4e531ff8b11f13300c7cbc565beb9f) (rebased) rebased: - 3.0 already has 1.11 ifdef |
0040 meta_engine taglib add sequential read limit on VlcI.patch | (download) |
modules/meta_engine/taglib.cpp |
14 13 + 1 - 0 ! |
meta_engine: taglib: add sequential read limit on vlciostream (cherry picked from commit d375284a144e6b18896deda3a86b9560bc04f3d8) (rebased) rebased: - 3.0 already has 1.11 ifdef |
0041 meta_engine taglib restrict unlimited reads on strea.patch | (download) |
modules/meta_engine/taglib.cpp |
9 8 + 1 - 0 ! |
meta_engine: taglib: restrict unlimited reads on streams taglib reads unlimited if no IDv3 or MPEG header is found at the beginning. (cherry picked from commit 8ec8b0d2add84b6d6b0c043e1c4f241998915ecd) (rebased) rebased: - only used with Taglib 1.11+ which is not always the case with 3.0 |
0042 meta taglib reject non expected schemes.patch | (download) |
modules/meta_engine/taglib.cpp |
23 23 + 0 - 0 ! |
meta: taglib: reject non expected schemes refs #25035 (cherry picked from commit 8191ac5727a3525a6bee99e1674167a7894f9ccb) (rebased) rebased: - 3.0 already has a26e2ba370d898dda04c718176af7d2e329dab7a above |
0043 taglib fix variable shadowing.patch | (download) |
modules/meta_engine/taglib.cpp |
8 4 + 4 - 0 ! |
taglib: fix variable shadowing |
0044 taglib Don t convert base64 strings to UTF8.patch | (download) |
modules/meta_engine/taglib.cpp |
4 2 + 2 - 0 ! |
taglib: don't convert base64 strings to utf8 The convertion will incur a cost which we don't want to pay since the art needs to be encoded in base64, which doesn't include anything outside of ASCII (cherry picked from commit 65dfe0cdc97bbb98ad34a690989636d40f326e32) |
0045 taglib ByteVector null is now deprecated.patch | (download) |
modules/meta_engine/taglib.cpp |
4 2 + 2 - 0 ! |
taglib: bytevector::null is now deprecated (cherry picked from commit d2663d6c3fe3af76bdefd58367b4a45c598b83e4) |
0046 taglib Remove usages of deprecated itemListMap.patch | (download) |
modules/meta_engine/taglib.cpp |
14 7 + 7 - 0 ! |
taglib: remove usages of deprecated itemlistmap contains() was added in 1.10 and item() is supported since 1.9 (cherry picked from commit ac59d0ba59ba800c52c0a92ec1d9576d2653dbe2) |
0047 taglib Remove use of deprecated String isNull.patch | (download) |
modules/meta_engine/taglib.cpp |
2 1 + 1 - 0 ! |
taglib: remove use of deprecated string::isnull (cherry picked from commit c404fdb24183031a419667639846edddca3401f8) (edited) edited: - 294cbdbaee0209bc88ca7bec9164da8da4ac44ef was merged before this patch |
0048 taglib Remove explicit invocation of default constru.patch | (download) |
modules/meta_engine/taglib.cpp |
2 1 + 1 - 0 ! |
taglib: remove explicit invocation of default constructor This is already done implicitly (cherry picked from commit 93842f650548d6f29ec13cf0679bf49cf5ce107c) |
0049 taglib Implement new StreamTypeResolver interface wh.patch | (download) |
modules/meta_engine/taglib.cpp |
31 31 + 0 - 0 ! |
taglib: implement new streamtyperesolver interface when available refs #26602 (cherry picked from commit 268b5b8bc1f1109c4fc69b22e53095c6d81faa76) (rebased) |
0050 taglib Use nullptr instead of 0 for pointers.patch | (download) |
modules/meta_engine/taglib.cpp |
2 1 + 1 - 0 ! |
taglib: use nullptr instead of 0 for pointers (cherry picked from commit 89e20ea0d87f414f763ce38ff5579aec61f71b42) |
0051 taglib Fix invalid version check.patch | (download) |
modules/meta_engine/taglib.cpp |
2 1 + 1 - 0 ! |
taglib: fix invalid version check (cherry picked from commit 53260ca5ae906f1e35791d14e4b588d25c04e51b) |
0052 meta taglib use std min.patch | (download) |
modules/meta_engine/taglib.cpp |
2 1 + 1 - 0 ! |
meta: taglib: use std::min (cherry picked from commit 584fd17a9445d8d5f7d692b7416eec09b9240b0e) |
0053 taglib don t cast the file st_size to a possibly sma.patch | (download) |
modules/meta_engine/taglib.cpp |
2 1 + 1 - 0 ! |
taglib: don't cast the file st_size to a possibly smaller type We can just use auto and always get the proper type. (cherry picked from commit 7413126744e0b494856ba9acc5ae3c27ce4af625) |
0054 taglib remove VLC path define check.patch | (download) |
modules/meta_engine/taglib.cpp |
3 1 + 2 - 0 ! |
taglib: remove vlc path define check It is no longer needed with contribs taglib updated to 1.13. (cherry picked from commit c5851fd495ed6de1d3712e64a2b1cc1e4e9059f4) |
0055 Taglib Use ID3v2Tag instead of tag for RIFF WAV File.patch | (download) |
modules/meta_engine/taglib.cpp |
40 40 + 0 - 0 ! |
taglib: use id3v2tag() instead of tag() for riff::wav::file `WriteMetaToId3v2` expects a `ID3v2::Tag` instead of `Tag`, but Since TagLib v2.0, `RIFF::WAV::File::tag()` returns a `Tag` instead of `ID3v2::Tag`, hence replace the usage of `tag()` method with `ID3v2Tag()`. https://github.com/taglib/taglib/blob/master/taglib/riff/wav/wavfile.h#L124 Additionally, to resolve the compilation error, the function signatures of `insert` and `removeBlock` have been adjusted to align with the base class functions. (cherry picked from commit ec29dfca1e59530dd412d779e0b045079b72ffb6) |
0056 lua don t use operator on VLC errors.patch | (download) |
modules/lua/extension.c |
10 8 + 2 - 0 ! |
lua: don't use | operator on vlc errors This could end up with unknown/invalid error values. (cherry picked from commit 586b28f4aab1f936d666bd3dab7904793c3012d7) |
0057 demux mkv fix link to ALAC documentation.patch | (download) |
modules/demux/mkv/matroska_segment_parse.cpp |
6 3 + 3 - 0 ! |
demux: mkv: fix link to alac documentation The 36 is the 12 bytes we write plus 24 bytes from ALACSpecificConfig. Also avoid subtracting 12 from a variable were we added 12 (our header). (cherry picked from commit d71ed1c6f081fba9e6e7ec4339734fc270ba0d64) |
0058 demux mkv write the actual extra data size in the AL.patch | (download) |
modules/demux/mkv/matroska_segment_parse.cpp |
2 1 + 1 - 0 ! |
demux: mkv: write the actual extra data size in the alac extradata This is what avcodec/audio expects when detecting the extradata. See InitDecoderConfig() (cherry picked from commit d2265e981fa19a9f5f1299e968348ed3ca98ee60) |
0059 demux mkv handle mkv use chapter codec option.patch | (download) |
modules/demux/mkv/matroska_segment_parse.cpp |
3 3 + 0 - 0 ! |
demux: mkv: handle mkv-use-chapter-codec option For safety reasons some users may not want to handle any chapter codec. The option was added 8697e6ef99ef0cec90bcf515052e5de1c09601ce but never implemented. (cherry picked from commit 4b479fb554cf1474fc549334459512b0b096dbcc) |
0060 hw amf keep the AMF version in the context.patch | (download) |
modules/hw/amf/amf_helper.c |
6 3 + 3 - 0 ! |
hw/amf: keep the amf version in the context For FRC we may need to disable it before 1.4.34. (cherry picked from commit de748458776f58f150edc06a4b9cac8c961dac20) |