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 {