Use signed long for FPDF_GetNamedDest buffer length.
authorBo Xu <bo_xu@foxitsoftware.com>
Wed, 21 Jan 2015 22:20:28 +0000 (14:20 -0800)
committerBo Xu <bo_xu@foxitsoftware.com>
Wed, 21 Jan 2015 22:20:28 +0000 (14:20 -0800)
Need to have return value -1 indicating insufficient buffer.

R=tsepez@chromium.org

Review URL: https://codereview.chromium.org/862163002

fpdfsdk/include/fpdfview.h
fpdfsdk/src/fpdfview.cpp

index e36d54e..f9df408 100644 (file)
@@ -623,19 +623,19 @@ DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(FPDF_DOCUMENT document,FPDF_
 // Function: FPDF_GetNamedDest
 //                     Get the specified named destinations of the PDF document by index.
 // Parameters:
-//                     document        -       Handle to a document
-//                     index           -       The index of named destination.
-//                     buffer          -       The buffer to obtain destination name, used as wchar_t*.
-//                     buflen          -       The length of the buffer in byte.
+//                     document        -       Handle to a document
+//                     index           -       The index of named destination.
+//                     buffer          -       The buffer to obtain destination name, used as wchar_t*.
+//                     buflen [in/out] -       Size of the buffer in bytes on input, length of the result in bytes on output or -1 if the buffer is too small.
 // Return value:
-//                     The destination handle of a named destination, NULL when retrieving the length.
+//                     The destination handle of a named destination, or NULL if no named destination corresponding to |index|.
 // Comments:
 //                     Call this function twice to get the name of the named destination:
 //                     1) First time pass in |buffer| as NULL and get buflen.
 //                     2) Second time pass in allocated |buffer| and buflen to retrieve |buffer|, which should be used as wchar_t*.
-//                        If buflen is not sufficiently large, it will be returned as -1.
+//                        If buflen is not sufficiently large, it will be set to -1 upon return.
 //
-DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index, void* buffer, unsigned long& buflen);
+DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index, void* buffer, long& buflen);
 
 
 #ifdef __cplusplus
index 87ef3ee..3f6bdd9 100644 (file)
@@ -817,7 +817,7 @@ DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDestByName(FPDF_DOCUMENT document,FPDF_
        return name_tree.LookupNamedDest(pDoc, name);
 }
 
-DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index, void* buffer, unsigned long& buflen)
+DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index, void* buffer, long& buflen)
 {
     if (!buffer)
         buflen = 0;
@@ -859,7 +859,7 @@ DLLEXPORT FPDF_DEST STDCALL FPDF_GetNamedDest(FPDF_DOCUMENT document, int index,
     } else if (buflen >= len) {
         memcpy(buffer, utf16Name.c_str(), len);
     } else {
-        len = -1;
+        buflen = -1;
     }
     return (FPDF_DEST)pDestObj;
 }