Here is a patch for bug #569.

Basically, non ASCII chars were added using _rtf_nonascii_hex2() which sets
m_bLastWasKeyword to UT_TRUE.
But when m_bLastWasKeyword is TRUE, _rtf_chardata() adds a " " after which
is wrong.

Here is a simple fix for an annoying bug.
Apply the patch to the current CVS release.

I did not check with UNICODE since I don't really know how it works. But is
the problem is there, it can be fixed the same way.

Hub
Index: src/wp/impexp/xp/ie_exp_RTF.cpp
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/impexp/xp/ie_exp_RTF.cpp,v
retrieving revision 1.7
diff -c -r1.7 ie_exp_RTF.cpp
*** src/wp/impexp/xp/ie_exp_RTF.cpp     2000/01/27 00:22:45     1.7
--- src/wp/impexp/xp/ie_exp_RTF.cpp     2000/05/03 15:44:12
***************
*** 280,285 ****
--- 280,296 ----
        m_bLastWasKeyword = UT_TRUE;
  }
  
+ /* output a non-ascii char in the RTF stream. */
+ void IE_Exp_RTF::_rtf_nonascii_hex2 (UT_sint32 d)
+ {
+       write("\\'");
+         char buf[100];
+       sprintf(buf,"%02x",d);
+       write(buf);
+       m_bLastWasKeyword = UT_FALSE;
+ }
+ 
+ 
  void IE_Exp_RTF::_rtf_keyword(const char * szKey, UT_sint32 d)
  {
        write("\\");
Index: src/wp/impexp/xp/ie_exp_RTF.h
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/impexp/xp/ie_exp_RTF.h,v
retrieving revision 1.5
diff -c -r1.5 ie_exp_RTF.h
*** src/wp/impexp/xp/ie_exp_RTF.h       2000/01/27 00:22:45     1.5
--- src/wp/impexp/xp/ie_exp_RTF.h       2000/05/03 15:44:12
***************
*** 59,64 ****
--- 59,65 ----
        void                            _rtf_close_brace(void);
        void                            _rtf_keyword(const char * szKey);
        void                            _rtf_keyword(const char * szKey, UT_sint32 d);
+       void                            _rtf_nonascii_hex2(UT_sint32 d);
        void                            _rtf_keyword_hex2(const char * szKey, 
UT_sint32 d);
        void                            _rtf_keyword_ifnotdefault(const char * szKey, 
const char * szValue, UT_sint32 defaultValue);
        void                            _rtf_keyword_ifnotdefault_twips(const char * 
szKey, const char * szValue, UT_sint32 defaultValue);
Index: src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp
===================================================================
RCS file: /u2/cvsroot/abi/src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp,v
retrieving revision 1.15
diff -c -r1.15 ie_exp_RTF_listenerWriteDoc.cpp
*** src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp    2000/04/01 06:02:22     1.15
--- src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp    2000/05/03 15:44:12
***************
*** 217,223 ****
                                // unicode sequence.  when i originally did this, i 
chose
                                // hex, so i'm not going to change it now.
                                
!                               m_pie->_rtf_keyword_hex2("'",*pData);
                                pData++;
                        }
                        else
--- 217,223 ----
                                // unicode sequence.  when i originally did this, i 
chose
                                // hex, so i'm not going to change it now.
                                
!                               m_pie->_rtf_nonascii_hex2(*pData);
                                pData++;
                        }
                        else

Reply via email to