|  | @@ -175,7 +175,7 @@ struct grpc_call {
 | 
	
		
			
				|  |  |    /* have we received initial metadata */
 | 
	
		
			
				|  |  |    bool has_initial_md_been_received;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  batch_control active_batches[MAX_CONCURRENT_BATCHES];
 | 
	
		
			
				|  |  | +  batch_control *active_batches[MAX_CONCURRENT_BATCHES];
 | 
	
		
			
				|  |  |    grpc_transport_stream_op_payload stream_op_payload;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /* first idx: is_receiving, second idx: is_trailing */
 | 
	
	
		
			
				|  | @@ -1052,7 +1052,11 @@ static batch_control *allocate_batch_control(grpc_call *call,
 | 
	
		
			
				|  |  |                                               const grpc_op *ops,
 | 
	
		
			
				|  |  |                                               size_t num_ops) {
 | 
	
		
			
				|  |  |    int slot = batch_slot_for_op(ops[0].op);
 | 
	
		
			
				|  |  | -  batch_control *bctl = &call->active_batches[slot];
 | 
	
		
			
				|  |  | +  batch_control **pslot = &call->active_batches[slot];
 | 
	
		
			
				|  |  | +  if (*pslot == NULL) {
 | 
	
		
			
				|  |  | +    *pslot = gpr_arena_alloc(call->arena, sizeof(batch_control));
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  batch_control *bctl = *pslot;
 | 
	
		
			
				|  |  |    if (bctl->call != NULL) {
 | 
	
		
			
				|  |  |      return NULL;
 | 
	
		
			
				|  |  |    }
 |