core/Translator.cpp
changeset 1133 473a77805cf2
parent 1105 ce907ba50921
child 1134 68e8b8d386ff
     1.1 --- a/core/Translator.cpp	Thu Jul 19 00:34:44 2007 +0000
     1.2 +++ b/core/Translator.cpp	Thu Jul 19 02:08:42 2007 +0000
     1.3 @@ -181,7 +181,6 @@
     1.4  			pPhrase->fmt_list = -1;
     1.5  
     1.6  			int trans_tbl = m_pMemory->CreateMem(sizeof(trans_t) * m_LangCount, (void **)&pTrans);
     1.7 -			/* Update the pointer! */
     1.8  			pPhrase = (phrase_t *)m_pMemory->GetAddress(m_CurPhrase);
     1.9  			pPhrase->trans_tbl = trans_tbl;
    1.10  
    1.11 @@ -303,7 +302,11 @@
    1.12  		/* Allocate the format table */
    1.13  		char fmt_buf[16];
    1.14  		int *fmt_list;
    1.15 -		pPhrase->fmt_list = m_pMemory->CreateMem(sizeof(int) * pPhrase->fmt_count, (void **)&fmt_list);
    1.16 +		int tmp = m_pMemory->CreateMem(sizeof(int) * pPhrase->fmt_count, (void **)&fmt_list);
    1.17 +
    1.18 +		/* Update the phrase pointer in case it changed */
    1.19 +		pPhrase = (phrase_t *)m_pMemory->GetAddress(m_CurPhrase);
    1.20 +		pPhrase->fmt_list = tmp;
    1.21  
    1.22  		/* Initialize */
    1.23  		for (size_t i=0; i<pPhrase->fmt_count; i++)
    1.24 @@ -366,6 +369,8 @@
    1.25  					state = Parse_None;
    1.26  					/* Now, add this to our table */
    1.27  					fmt_list[cur_idx - 1] = m_pStringTab->AddString(fmt_buf);
    1.28 +					pPhrase = (phrase_t *)m_pMemory->GetAddress(m_CurPhrase);
    1.29 +					fmt_list = (int *)m_pMemory->GetAddress(pPhrase->fmt_list);
    1.30  					pPhrase->fmt_bytes += strlen(fmt_buf);
    1.31  				} else {
    1.32  					if (!out_ptr)
    1.33 @@ -427,6 +432,9 @@
    1.34  
    1.35  		out_idx = m_pMemory->CreateMem(len, (void **)&out_buf);
    1.36  
    1.37 +		/* Update pointer */
    1.38 +		pPhrase = (phrase_t *)m_pMemory->GetAddress(m_CurPhrase);
    1.39 +
    1.40  		int *fmt_order;
    1.41  		int *fmt_list = (int *)m_pMemory->GetAddress(pPhrase->fmt_list);
    1.42  		trans_t *pTrans = (trans_t *)m_pMemory->GetAddress(pPhrase->trans_tbl);
    1.43 @@ -439,7 +447,16 @@
    1.44  		/* Build the format order list, if necessary */
    1.45  		if (fmt_list)
    1.46  		{
    1.47 -			pTrans->fmt_order = m_pMemory->CreateMem(pPhrase->fmt_count * sizeof(int), (void **)&fmt_order);
    1.48 +			int tmp = m_pMemory->CreateMem(pPhrase->fmt_count * sizeof(int), (void **)&fmt_order);
    1.49 +			
    1.50 +			/* Update pointers */
    1.51 +			pPhrase = (phrase_t *)m_pMemory->GetAddress(m_CurPhrase);
    1.52 +			pTrans = (trans_t *)m_pMemory->GetAddress(pPhrase->trans_tbl);
    1.53 +			fmt_list = (int *)m_pMemory->GetAddress(pPhrase->fmt_list);
    1.54 +			pTrans = &pTrans[lang];
    1.55 +
    1.56 +			/* Now it's safe to save the index */
    1.57 +			pTrans->fmt_order = tmp;
    1.58  
    1.59  			for (unsigned int i=0; i<pPhrase->fmt_count; i++)
    1.60  			{