|  | @@ -52,7 +52,7 @@ static grpc_arg copy_arg(const grpc_arg *src) {
 | 
	
		
			
				|  |  |        break;
 | 
	
		
			
				|  |  |      case GRPC_ARG_POINTER:
 | 
	
		
			
				|  |  |        dst.value.pointer = src->value.pointer;
 | 
	
		
			
				|  |  | -      dst.value.pointer.p = src->value.pointer.copy(src->value.pointer.p);
 | 
	
		
			
				|  |  | +      dst.value.pointer.p = src->value.pointer.copy? src->value.pointer.copy(src->value.pointer.p) : src->value.pointer.p;
 | 
	
		
			
				|  |  |        break;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    return dst;
 | 
	
	
		
			
				|  | @@ -91,7 +91,9 @@ void grpc_channel_args_destroy(grpc_channel_args *a) {
 | 
	
		
			
				|  |  |        case GRPC_ARG_INTEGER:
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case GRPC_ARG_POINTER:
 | 
	
		
			
				|  |  | -        a->args[i].value.pointer.destroy(a->args[i].value.pointer.p);
 | 
	
		
			
				|  |  | +        if (a->args[i].value.pointer.destroy) {
 | 
	
		
			
				|  |  | +          a->args[i].value.pointer.destroy(a->args[i].value.pointer.p);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      gpr_free(a->args[i].key);
 |