changed how to calculate the mid point in a binary search loop
This commit is contained in:
		@ -8,6 +8,17 @@ class Exception(Apex)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	var signalContext, handlerContext, messageText.
 | 
						var signalContext, handlerContext, messageText.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(*
 | 
				
			||||||
 | 
					TODO: can i convert 'thisProcess primError' to a relevant exception?
 | 
				
			||||||
 | 
						var(#class) primExceptTable.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						method(#class) forPrimitiveError: no
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							^self.primExceptTable at: no
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					*)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	method(#class) signal
 | 
						method(#class) signal
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		^self new signal
 | 
							^self new signal
 | 
				
			||||||
 | 
				
			|||||||
@ -804,13 +804,17 @@ int moo_genpfmethods (moo_t* moo, moo_mod_t* mod, moo_oop_class_t _class, const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
moo_pfbase_t* moo_findpfbase (moo_t* moo, moo_pfinfo_t* pfinfo, moo_oow_t pfcount, const moo_ooch_t* name, moo_oow_t namelen)
 | 
					moo_pfbase_t* moo_findpfbase (moo_t* moo, moo_pfinfo_t* pfinfo, moo_oow_t pfcount, const moo_ooch_t* name, moo_oow_t namelen)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int left, right, mid, n;
 | 
						moo_oow_t left, right, mid;
 | 
				
			||||||
 | 
						int n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* binary search */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	left = 0; right = pfcount - 1;
 | 
						left = 0; right = pfcount - 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (left <= right)
 | 
						while (left <= right)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		mid = (left + right) / 2;
 | 
							/*mid = (left + right) / 2;*/
 | 
				
			||||||
 | 
							mid = left + ((right - left) / 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		n = moo_compoocharsoocstr (name, namelen, pfinfo[mid].mthname);
 | 
							n = moo_compoocharsoocstr (name, namelen, pfinfo[mid].mthname);
 | 
				
			||||||
		if (n < 0) right = mid - 1; 
 | 
							if (n < 0) right = mid - 1; 
 | 
				
			||||||
@ -895,7 +899,6 @@ void* moo_getobjtrailer (moo_t* moo, moo_oop_t obj, moo_oow_t* size)
 | 
				
			|||||||
	return MOO_OBJ_GET_TRAILER_BYTE(obj);
 | 
						return MOO_OBJ_GET_TRAILER_BYTE(obj);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
moo_oop_t moo_findclass (moo_t* moo, moo_oop_set_t nsdic, const moo_ooch_t* name)
 | 
					moo_oop_t moo_findclass (moo_t* moo, moo_oop_set_t nsdic, const moo_ooch_t* name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	moo_oop_association_t ass;
 | 
						moo_oop_association_t ass;
 | 
				
			||||||
 | 
				
			|||||||
@ -1281,8 +1281,8 @@ enum moo_synerrnum_t
 | 
				
			|||||||
	MOO_SYNERR_CLASSDUPL,       /* duplicate class */
 | 
						MOO_SYNERR_CLASSDUPL,       /* duplicate class */
 | 
				
			||||||
	MOO_SYNERR_CLASSCONTRA,     /* contradictory class */
 | 
						MOO_SYNERR_CLASSCONTRA,     /* contradictory class */
 | 
				
			||||||
	MOO_SYNERR_CLASSNAMEINVAL,  /* wrong class name */
 | 
						MOO_SYNERR_CLASSNAMEINVAL,  /* wrong class name */
 | 
				
			||||||
	MOO_SYNERR_CLASSTRSIZE,     /* non-pointer class inheriting a superclass with trailer size set */
 | 
						MOO_SYNERR_CLASSTRSIZE,     /* non-pointer class now allowed to inherit a superclass with trailer size set */
 | 
				
			||||||
	MOO_SYNERR_CLASSFINAL,      /* cannot inherit a #final class */
 | 
						MOO_SYNERR_CLASSFINAL,      /* now allowed to inherit a #final class */
 | 
				
			||||||
	MOO_SYNERR_VARDCLBANNED,    /* variable declaration not allowed */
 | 
						MOO_SYNERR_VARDCLBANNED,    /* variable declaration not allowed */
 | 
				
			||||||
	MOO_SYNERR_MODIFIER,        /* modifier expected */
 | 
						MOO_SYNERR_MODIFIER,        /* modifier expected */
 | 
				
			||||||
	MOO_SYNERR_MODIFIERINVAL,   /* wrong modifier */
 | 
						MOO_SYNERR_MODIFIERINVAL,   /* wrong modifier */
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user