From 32815703deaffcee36b447c40617ec479dc9f6de Mon Sep 17 00:00:00 2001 From: eDO Team Date: Thu, 23 Jul 2026 06:22:24 -0700 Subject: [PATCH] Fix duplicate EDO classes issue in EDOIsRemoteObject. Compare class names instead of pointers to handle cases where EDO is linked multiple times (statically and dynamically). PiperOrigin-RevId: 952721407 --- Service/Sources/EDOClientService.m | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/Service/Sources/EDOClientService.m b/Service/Sources/EDOClientService.m index e00f80c..eb868be 100644 --- a/Service/Sources/EDOClientService.m +++ b/Service/Sources/EDOClientService.m @@ -17,6 +17,7 @@ #import "Service/Sources/EDOClientService.h" #include +#import #import "Channel/Sources/EDOChannel.h" #import "Channel/Sources/EDOChannelPool.h" @@ -248,7 +249,7 @@ + (EDOServiceResponse *)sendSynchronousRequest:(EDOServiceRequest *)request + (EDOServiceResponse *)sendSynchronousRequest:(EDOServiceRequest *)request onPort:(EDOHostPort *)port withExecutor:(EDOExecutor *)executor { - return [self sendSynchronousRequest:request onPort:port withExecutor:executor error:NULL]; + return [self sendSynchronousRequest:request onPort:port withExecutor:executor error:nullptr]; } + (EDOServiceResponse *)sendSynchronousRequest:(EDOServiceRequest *)request @@ -462,15 +463,10 @@ + (id)responseObjectWithRequest:(EDOServiceRequest *)request onPort:(EDOHostPort * classes to optimize the check. */ BOOL EDOIsRemoteObject(id object) { - static Class remoteObjectClass; - static Class remoteBlockClass; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - remoteObjectClass = [EDOObject class]; - remoteBlockClass = [EDOBlockObject class]; - }); Class objectClass = [object class]; - return objectClass == remoteObjectClass || objectClass == remoteBlockClass; + const char *className = objectClass ? class_getName(objectClass) : nullptr; + return className && + (strcmp(className, "EDOObject") == 0 || strcmp(className, "EDOBlockObject") == 0); } void EDOExportEDOClientError(NSError *error) { gEDOClientErrorHandler(error); }