Skip to content
This repository has been archived by the owner on Oct 26, 2024. It is now read-only.

Commit

Permalink
chore: Merge branch dev to main (#566)
Browse files Browse the repository at this point in the history
  • Loading branch information
oSumAtrIX authored Feb 8, 2024
2 parents 48b968f + cdd8db7 commit bd37368
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 9 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## [1.3.2-dev.1](https://github.com/ReVanced/revanced-integrations/compare/v1.3.1...v1.3.2-dev.1) (2024-02-07)


### Bug Fixes

* **YouTube - Litho Filter:** Ignore null buffers ([#565](https://github.com/ReVanced/revanced-integrations/issues/565)) ([f72faa7](https://github.com/ReVanced/revanced-integrations/commit/f72faa761cca306952f270208bee4a8f59c59dda))

## [1.3.1](https://github.com/ReVanced/revanced-integrations/compare/v1.3.0...v1.3.1) (2024-02-07)


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -503,12 +503,18 @@ private static void filterUsingCallbacks(StringTrieSearch pathSearchTree,
* Injection point. Called off the main thread.
*/
@SuppressWarnings("unused")
public static void setProtoBuffer(@NonNull ByteBuffer protobufBuffer) {
public static void setProtoBuffer(@Nullable ByteBuffer protobufBuffer) {
// Set the buffer to a thread local. The buffer will remain in memory, even after the call to #filter completes.
// This is intentional, as it appears the buffer can be set once and then filtered multiple times.
// The buffer will be cleared from memory after a new buffer is set by the same thread,
// or when the calling thread eventually dies.
bufferThreadLocal.set(protobufBuffer);
if (protobufBuffer == null) {
// It appears the buffer can be cleared out just before the call to #filter()
// Ignore this null value and retain the last buffer that was set.
Logger.printDebug(() -> "Ignoring null protobuffer");
} else {
bufferThreadLocal.set(protobufBuffer);
}
}

/**
Expand All @@ -523,15 +529,13 @@ public static boolean filter(@Nullable String lithoIdentifier, @NonNull StringBu

ByteBuffer protobufBuffer = bufferThreadLocal.get();
final byte[] bufferArray;
// The buffer can be null or empty when using YT 19.x.
// This is likely caused by different threads setting the buffer and calling this method.
// 100% fixing this would require passing the buffer into this method (which may not be so simple).
// For now, still filter with an empty buffer so the non proto buffer filters work correctly.
// Potentially the buffer may have been null or never set up until now.
// Use an empty buffer so the litho id/path filters still work correctly.
if (protobufBuffer == null) {
Logger.printDebug(() -> "Proto buffer is null");
Logger.printDebug(() -> "Proto buffer is null, using an empty buffer array");
bufferArray = EMPTY_BYTE_ARRAY;
} else if (!protobufBuffer.hasArray()) {
Logger.printDebug(() -> "Proto buffer does not have an array");
Logger.printDebug(() -> "Proto buffer does not have an array, using an empty buffer array");
bufferArray = EMPTY_BYTE_ARRAY;
} else {
bufferArray = protobufBuffer.array();
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
org.gradle.parallel = true
org.gradle.caching = true
android.useAndroidX = true
version = 1.3.1
version = 1.3.2-dev.1

0 comments on commit bd37368

Please sign in to comment.