Clear the sort plan
This commit is contained in:
		
							parent
							
								
									806e0c9198
								
							
						
					
					
						commit
						08b22bf6e8
					
				
							
								
								
									
										22
									
								
								sort.c
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								sort.c
									
									
									
									
									
								
							| @ -53,9 +53,6 @@ struct sortplan { | ||||
| 	/* The first and last events which need sorting */ | ||||
| 	struct ovni_ev *bad0; | ||||
| 
 | ||||
| 	/* The first event in the stream that may be affected */ | ||||
| 	struct ovni_ev *first; | ||||
| 
 | ||||
| 	/* The next event which must be not affected */ | ||||
| 	struct ovni_ev *next; | ||||
| 
 | ||||
| @ -182,6 +179,11 @@ execute_sort_plan(struct sortplan *sp) | ||||
| { | ||||
| 	int64_t i0, bufsize; | ||||
| 	uint8_t *buf; | ||||
| 	/* The first event in the stream that may be affected */ | ||||
| 	struct ovni_ev *first; | ||||
| 
 | ||||
| 
 | ||||
| 	dbg("attempt to sort: start clock %ld\n", sp->bad0->header.clock); | ||||
| 
 | ||||
| 	/* Cannot sort in one pass; just fail for now */ | ||||
| 	if((i0 = find_destination(sp->r, sp->bad0->header.clock)) < 0) | ||||
| @ -191,10 +193,10 @@ execute_sort_plan(struct sortplan *sp) | ||||
| 	} | ||||
| 
 | ||||
| 	/* Set the pointer to the first event */ | ||||
| 	sp->first = sp->r->ev[i0]; | ||||
| 	first = sp->r->ev[i0]; | ||||
| 
 | ||||
| 	/* Allocate a working buffer */ | ||||
| 	bufsize = ((int64_t) sp->next) - ((int64_t) sp->first); | ||||
| 	bufsize = ((int64_t) sp->next) - ((int64_t) first); | ||||
| 
 | ||||
| 	if(bufsize <= 0) | ||||
| 		die("bufsize is non-positive\n"); | ||||
| @ -203,11 +205,12 @@ execute_sort_plan(struct sortplan *sp) | ||||
| 	if(!buf) | ||||
| 		die("malloc failed: %s\n", strerror(errno)); | ||||
| 
 | ||||
| 	sort_buf((uint8_t *) sp->first, buf, bufsize, | ||||
| 	sort_buf((uint8_t *) first, buf, bufsize, | ||||
| 			(uint8_t *) sp->bad0, (uint8_t *) sp->next); | ||||
| 
 | ||||
| 	/* Copy the sorted events back into the stream buffer */ | ||||
| 	memcpy(sp->first, buf, bufsize); | ||||
| 	memcpy(first, buf, bufsize); | ||||
| 	free(buf); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| @ -260,6 +263,11 @@ stream_winsort(struct ovni_stream *stream, struct ring *r) | ||||
| 							stream->tid); | ||||
| 					return -1; | ||||
| 				} | ||||
| 
 | ||||
| 				/* Clear markers */ | ||||
| 				sp.next = NULL; | ||||
| 				sp.bad0 = NULL; | ||||
| 
 | ||||
| 				st = 'S'; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user